Dieser Artikel stellt hauptsächlich das objektorientierte Überladen in PHP vor, das einen gewissen Referenzwert hat. Jetzt kann ich es mit allen teilen. Freunde in Not können darauf verweisen
1) „erstellt“ dynamisch die Eigenschaften und Methoden einer Klasse.
2) Erreicht durch magische Methode.
3) Beim Aufrufen von Attributen oder Methoden einer Klasse, die in der aktuellen Umgebung undefiniert oder unsichtbar sind, wird die überladene Methode aufgerufen.
__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 调用不可访问的静态方法
Besonderer Hinweis: Bei der Definition von __callStatic muss es als statische Methode definiert werden.
<?php class 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]);
Verwandte Empfehlungen:
php-objektorientierte Kapselung
php Objektorientierte magische Methoden
Objektorientierte statische PHP-Methoden, Eigenschaften und Konstanten
Das obige ist der detaillierte Inhalt vonObjektorientiertes Überladen von PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!