php學習筆記(四)魔術方法

2021-06-28 00:26:20 字數 1703 閱讀 4626

php 將所有以_ _(兩個下劃線)開頭的類方法保留為魔術方法。

public string __tostring ( void ):當物件被當做string使用時,這個方法會被自動呼叫。此方法必須返回乙個字串

<?php

class magic

}$obj = new magic();

echo $obj;//hello world!

?>

__invoke():當物件被當成方法呼叫時,這個方法會被自動呼叫。

<?php

class magic

public function __invoke($x)

}$obj = new magic();

$obj(10);//__invoke called with param 10

?>

__call():當物件訪問不存在的方法名稱時,__call()方法會被自動呼叫

__callstatic():當物件訪問不存在的靜態方法名稱時,__callstatic()方法會被自動呼叫

通過這兩個方法,同乙個方法的名稱的呼叫可以對應不同的方法實現

<?php

class magic

}$obj = new magic();

$obj->run("para1","para2");//obj去呼叫run方法,輸出:calling run with param: para1, para2

?>

在給不可訪問屬性賦值時,__set()會被呼叫

讀取不可訪問屬性的值時,__get()會被呼叫

<?php

class magic

}$obj = new magic();

echo $obj->classname."\n";//getting the property classname

?>

讀取不可訪問屬性的值時,__get()會被呼叫

<?php

class magic

}$obj = new magic();

$obj->classname = 'magicclass';//setting the property classnameto value magicclass

?>

當對不可訪問屬性呼叫isset()empty()時,__isset()會被呼叫

當對不可訪問屬性呼叫unset()時,__unset()會被呼叫

<?php

class magic

}$obj = new magic();

echo '$obj->classname is set?'.isset($obj->classname)."\n";//__isset invoked $obj->classname is set?1

?>

php學習之四(魔術變數)

php 向它執行的任何指令碼提供了大量的預定義常量。不過很多常量都是由不同的擴充套件庫定義的,只有在載入了這些擴充套件庫時才會出現,或者動態載入後,或者在編譯時已經包括進去了。有八個魔術常量它們的值隨著它們在 中的位置改變而改變。例如 line 的值就依賴於它在指令碼中所處的行來決定。這些特殊的常量...

php魔術常量,魔術方法

魔術常量 1。line 返回檔案中的當前行號。2。file 返回檔案的完整路徑和檔名。如果用在包含檔案中,則返回包含檔名。自php4.0.2 起,file 總是包含乙個絕對路徑,而在此之前的版本有時會包含乙個相對路徑。3。function 返回函式名稱 php4.3.0 新加 自php5 起本常量返...

invoke 魔術 PHP 魔術方法

php 魔術方法 構造方法 construct 析構方法 destruct get 與 set unset call 和 callstatic sleep 和 wakeup clone tostring invoke set state debuginfo construct 這個方法應該是最常用的...