這篇文章主要介紹了關於php物件導向之重載 ,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
定義:
1)動態地“建立”類的屬性和方法。
2)通過魔術方法實現。
3)當調用當前環境下未定義或不可見的類的屬性或方法時,重載方法會被調用。
屬性重載
__set 賦值__get 讀取__isset 判斷是否存在__unset 銷毀
例子
// 屬性的重載class Person{ public $name = '小芳'; protected $age = 18; public function __get($n) { //echo '試圖讀取不可訪問的屬性'.$n; if( $n == 'age'){ return $this -> age; }else{ return '你要查戶口嗎?'; } } public function __set($n,$v) { //echo '試圖設定不可訪問的屬性','<br/>'; $this -> $n = $v; } public function __isset($n) { echo '判斷不可訪問的屬性'.$n.'是否存在','<br/>'; } public function __unset($n) { echo '銷毀不可訪問的屬性'.$n,'<br/>'; }}$p1 = new Person();// 讀取//echo $p1 -> age,'<br/>';//echo $p1 -> xxx,'<br/>';// 設定//$p1 -> age = 30;//echo $p1 -> age,'<br/>';// 判斷存在與否isset($p1 -> age);// 銷毀unset($p1 -> age);
方法重載
__call 調用不可訪問的普通方法__callStatic 調用不可訪問的靜態方法
特別注意,__callStatic定義時,要定義成靜態方法。
例子
<?phpclass MyClass{ protected function func($n) { echo '這是一個不可訪問的方法'; echo '參數有'.$n; } protected static function fun2() { echo '受保護的靜態方法'; } public function __call($function_name,$args) { echo '觸發了不可訪問的方法'; var_dump($function_name); var_dump($args); } public static function __callStatic($function_name,$args) { echo '觸發了不可訪問jing tai方法,靜態!!!!'; var_dump($function_name); var_dump($args); }} // 執行個體化$c1 = new MyClass();$c1 -> func([1,2,3]);$c1 -> func2([1,2,3]);