色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

php classname magic

李明濤1年前7瀏覽0評論

PHP中有一項非常神奇的特性,那就是magic methods魔術方法,其中classname magic又是其中十分重要的一種。

名稱中的"magic"一詞意味著這些方法是能夠在類對象的創建、屬性的賦值、方法的調用、以及類本身不存在時進行操作。classname magic主要使用了兩個方法:__get和__set。

對于__get方法來說,它是用于在對類中未定義的屬性進行訪問時被自動調用的方法。例如,當調用一個未定義的屬性時,__get方法將會被調用并返回一個值,或者在未定義的屬性被寫入時將一個值賦給它。

class MyClass {
private $myprop;
function __get($name) {
return $this->myprop;
}
function __set($name, $value) {
$this->myprop = $name;
} 
}
$myobj = new MyClass();
$myobj->hello = "world";//調用__set方法,將"world"賦值給$myprop屬性
echo $myobj->hello;//調用__get方法,輸出"world"

注意到__get和__set方法的參數分別為$name和$value,這兩個參數用于獲取和寫入屬性的值。

當然,如果我們將__set方法的參數$value修改為該屬性的類型,手動過濾掉錯誤類型的輸入也是可行的。

class MyClass {
private $myprop;
function __get($name) {
return $this->myprop;
}
function __set($name, $value) {
if(gettype($value)!="string"){//過濾非字符串類型
return;
}
$this->myprop = $name;
} 
}
$myobj = new MyClass();
$myobj->hello = "world";//輸出"world"
$myobj->hello = 1;//無輸出

總之,classname magic為開發者提供了在訪問未定義屬性的情況下進行操作的機會,這可以大大簡化代碼,并使得錯誤排查更加方便。