Heim  >  Artikel  >  Backend-Entwicklung  >  PHPs Verständnis von magischen Methoden

PHPs Verständnis von magischen Methoden

coldplay.xixi
coldplay.xixiOriginal
2020-10-07 15:28:331485Durchsuche

PHPs Verständnis magischer Methoden: 1. Das Attribut [_set] legt das Attribut automatisch fest, wenn es nicht vorhanden ist oder nicht gelesen werden kann. 3. Wenn das Attribut [__get] nicht vorhanden ist, legen Sie es fest. Die Methode [__call] ist nicht vorhanden und wird ausgeführt. 4. [__callStatic] Wenn die statische Methode nicht vorhanden ist, wird sie ausgeführt.

PHPs Verständnis von magischen Methoden

phps Verständnis von magischen Methoden:

1. _set: Setzt das Attribut automatisch, wenn das Attribut nicht existiert _set:属性不存在时自动设置属性

/**
* 属性不存在时通过__set自动设置属性
* @param $key [键名]
* @param $value [属性值]
*/
function __set($key,$value){
$this->arr[$key] = $value;
}
 
代码:
$object->title = 'blue'; //设置不存在的属性,调用__set()
echo $object->title,&#39;<br/>&#39;; //输出不存在的属性,调用__get()
 
输出:
blue

2、__get:属性不存在或不能读取时,设置该方法可读取

/**
* 属性不存在或不能读取(属性为私有private)时,通过__get读取
* @param $key 键名
* @return 属性
*/
function __get($key){
return $this->arr[$key];
}

3、__call:方法不存在时,执行

/**
* 方法不存在时,执行__call方法
* @param $func [方法名]
* @param $param [参数]
* @return [description]
*/
function __call($func,$param){
var_dump($func);
echo &#39;<br/>&#39;;
var_dump($param);
echo &#39;<br/>&#39;;
}
 
代码:
$object -> show(&#39;hello&#39;,&#39;world&#39;); //调用不存在的方法,调用__call()
 
输出:
string(4) "show"
array(2) { [0]=> string(5) "hello" [1]=> string(5) "world" }

4、__callStatic:静态方法不存在时,执行

/**
* 静态方法不存在时,执行__callStatic方法
* @param $func [方法名]
* @param $param [参数]
* @return [description]
*/
static function __callStatic($func,$param){
var_dump($func);
echo &#39;<br/>&#39;;
var_dump($param);
echo &#39;<br/>&#39;;
}
 
代码:
IMooc\Object::show(&#39;hello&#39;,&#39;world&#39;); //调用不存在的静态方法,调用__callStatic()
 
输出:
string(4) "show"
array(2) { [0]=> string(5) "hello"  [1]=>string(5) "world" }

5、__toString:当对象转换为字符串时,执行

/**
* 当对象转换为字符串时,执行__toString方法
* @return string [description]
*/
function __toString{
return __CLASS__;
}
 
代码:
echo $object,&#39;<br/>&#39;; //将对象以字符串形式输出,调用__toString()
 
输出:
IMooc\Object

6、__invoke

/**
* 当把对象当成函数来使用时,执行__invoke方法
* @param [type] $param [参数]
* @return [type] [description]
*/
function __invoke($param){
var_dump($param);
}
 
代码:
echo $object(&#39;hello&#39;); //将对象当函数使用,调用__invoke()
 
输出:
string(5) "hello"

2 : Attribut Wenn es nicht existiert oder nicht gelesen werden kann, stellen Sie die Methode auf lesbar ein
rrreee

3: Wenn die Methode nicht existiert, führen Sie sie ausrrreee4 : Statische Methode Wenn sie nicht existiert, führen Sie
rrreee

5, __toString aus: Wenn das Objekt in einen String konvertiert wird, führen Sie
rrreee🎜6, __invokeaus >: Wenn das Objekt als Funktion verwendet wird, führen Sie 🎜rrreee🎜🎜Verwandte kostenlose Lernempfehlungen aus: 🎜php-Programmierung🎜 (Video) 🎜🎜🎜

Das obige ist der detaillierte Inhalt vonPHPs Verständnis von magischen Methoden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn