批改狀態(tài):未批改
老師批語:
1、匿名對象與匿名類的實現(xiàn)過程:
<?php class a{ private $name ='甜歌'; public function stror($name){ return $this->name.'看上了:<span style="color:red;">'.$name.'</span>'; } } $a = new a(); echo $a->stror('帥哥').'<hr>'; // 匿名對象 echo (new a())->stror('好哥們').'<hr>'; //匿名類 echo (new class{ private $name = '壞孩子'; public function stror($name){ return $this->name.'喜歡上了:<span style="color:red;">'.$name.'</span>'; } })->stror('帥哥'),'<hr>';
點擊 "運行實例" 按鈕查看在線實例
2、Trait類的聲明與工作原理:
<?php class a{ // 受保護的成員變量 protected $name; public function __construct($name='小白'){ $this->name=$name; } public function study($course = 'php'){ return $this->name . '學(xué)習(xí):' . $course; } } trait Cour{ public $title = '小名'; public function study($name = '踢足球'){ return $this->name .'在學(xué)習(xí)'.$name; } } trait Cour1{ public function study($name = '打籃球'){ return $this->name .'和'.$this->title.$name; } } class Student extends a{ use Cour,Cour1{ // 當(dāng)Cour類中的方法與Cour1類中的方法同名就替換成 Cour1的類方法, Cour::study insteadof Cour1; // 給 Cour1類中的方法起個別名 Cour1::study as MySport; } } // Student對象實例化 $Student = new Student(); // 調(diào)用的是 $Student類中的trait Cour類study方法 echo $Student->study().'<hr>'; // 調(diào)用的是 $Student類中的trait Cour1類study方法,但是與方法同名了,所以起了調(diào)用的是MySport別名 echo $Student->MySport().'<hr>';
點擊 "運行實例" 按鈕查看在線實例
3、類的自動加載函數(shù)的寫法:
<?php spl_autoload_register(function ($className){ // 自動加載class文件夾中的后綴.php文件 require 'class/'.$className.'.php'; });
點擊 "運行實例" 按鈕查看在線實例
4、對象的序列化與反序列化的原理與應(yīng)用:
<?php class demo{ public $name; public $age; public $salary; // 構(gòu)造方法 public function __construct($name,$age,$salary=0){ $this->name=$name; $this->age=$age; $this->salary=$salary; } // 當(dāng)有序列化的屬性時,自動調(diào)用 public function __sleep(){ return ['name','age','salary']; // 要序列化的屬性 } // 如果反序列化時,wakeup方法中有相同的屬性時,就以wakeup方法中的值為最新值 public function __wakeup(){ $this->age = 48; $this->name = '天歌鳳舞'; } } $obj = new demo('天弘',28,5000); // 序列化之前對象屬性 echo '姓名:'.$obj -> name.',年齡:'.$obj->age.',工資:'.$obj->salary.'<br>'; // 序列化之后對象屬性 $obj1 = serialize($obj); echo $obj1.'<hr>'; // 反序列化 $obj2 = unserialize($obj1); // 反序列化之后的對象屬性 echo '姓名:'.$obj -> name.',年齡:'.$obj->age.',工資:'.$obj->salary.'<br>'; // 反序列化之后 var_dump($obj2); echo '<hr>';
點擊 "運行實例" 按鈕查看在線實例
5、面向?qū)ο缶幊痰幕纠斫?/strong>
訪問一個類,必須要實例化對象。這樣才可以訪問對象中的類。當(dāng)有很多類方法相同的情況下,為了代碼復(fù)用性,我們可以把對象實例化來進行調(diào)用與訪問。以及繼承其他的類進行訪問調(diào)用,這樣代碼就更加簡潔一些。
可以把對象中的類,看作為一個方法類,當(dāng)我們需要哪些代碼時,進行對象的實例化進行調(diào)用他的方法類。
在對象中有三個重要的訪問控制符:private 私有化:屬性僅在當(dāng)前對象內(nèi)部可以使用,外部類不可以調(diào)用。public公開的:可以在外部類進行調(diào)用與使用。protected 受保護:僅限本類或本類的子類訪問,外部不可訪問與代用
有了類才可以實例化對象,實例化對象后才可以進行調(diào)用類(包含繼承類),訪問類,成員屬性!對象中沒有類,也只是個無用的代碼!
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號