1.概述
__get:獲取私有屬性值的時候呼叫
__set:設定私有屬性值的時候呼叫
__construct:構造方法
__destruct:析構方法
__unset
觸發時機:當銷毀乙個私有成員屬性的時候呼叫
引數:屬性名
__isset
觸發時機:當判斷乙個私有成員屬性是否被設定過時呼叫
引數:屬性名
__invoke(了解)
觸發時機:當將乙個物件當作函式使用的時候被呼叫
引數:任意多個,呼叫時傳遞多少個這裡就寫多少個
__tostring(了解)
觸發時機:當echo乙個物件的時候呼叫
引數:沒有引數
返回值:返回乙個字串,該字串就會被列印出來,這個字串需要自己定製
__debuginfo(了解)
觸發時機:當var_dump來列印這個物件的時候呼叫
引數:沒有引數
返回值:返回乙個自定義的陣列,你想列印什麼就打什麼
__call
觸發時機:當呼叫乙個不存在的成員方法的時候觸發
引數:方法名 引數陣列
__callstatic(講完靜態方法時候再講)
$this->成員屬性:在類裡面訪問自己的成員屬性和方法。
public:公共的,在類內和類外都可以直接訪問
private:私有的一般在類外不能訪問。
2.魔術方法:
(1)__unset():用unset銷毀乙個私有的成員屬性的時候呼叫,引數:屬性名。
<?php
class cat
public function miao()
public function __unset($arg)
}$bosi = new cat('波斯貓', 10, 20);
unset($bosi->age);
(2)__isset():當判斷乙個私有的成員屬性是否被設定時呼叫,引數:屬性名。
<?php
class cat
public function __isset($arg)
return isset($this->$arg);
isset($bosi->age);
(3)__invoke:當將乙個物件當做函式時被呼叫,引數任意多個,呼叫時傳遞多少個這裡就寫多少個。
<?php
class dog
public $name = 'wang';
public function wangwang()
echo '旺旺';
public function __invoke($a,$b,$c)
echo '將物件作為函式使用了';
$tai = new dog();
$tai(100,200,300);
(4)__tostring:當echo乙個物件的時候呼叫,這個函式裡面返回什麼字串echo的時候就列印出什麼。沒有引數,但是有返回值,返回乙個字串,該字串需要自己定製。
<?php
class dog
public function __tostring()
return '我的姓名是'.$this->name;
$tai = new dog();
echo $tai;
(5)__debuginfo():觸發時機:當使用var_dump()列印物件的時候會呼叫。返回乙個自定義的陣列,陣列裡面是需要列印的東西,沒有引數。
<?php
class dog
public function __debuginfo()
return ['name','age'];
$tai = new dog();
var_dump($tai);
(6)__call():呼叫不存在的成員方法時會自動呼叫該方法。引數:方法名,引數陣列。
<?php
class dog
}$tai = new dog();
$tai->eat(100, 100);
結果:
string(3) "eat"
array(2)
例項化乙個物件後,當呼叫這個物件的成員方法存在時,則直接呼叫其成員方法,但是當成員方法不存在時,將轉而去呼叫__call方法。
同時__call必須有兩個引數,這個引數名可以隨意取,但是為了方便我們通常取為$name和$args
當成員方法不存在時,__call將被呼叫,同時,這個不存在的方法名稱會作為字串傳遞給第乙個引數(這裡第乙個引數是$name),將呼叫時傳遞的引數作為列表傳遞給第二個引數(這裡第二個引數是$args)。
(7)__callstatic():呼叫不存在的靜態方法時
3.連貫操作(鏈式操作):
資料庫操作類查詢的時候有很多條件:
$model->limit()->where()->filed()->table()->select()
<?php
class model
function filed()
return $this;
function limit()
return $this;
function select()
//返回查詢結果。
4.通過__call實現單字段的查詢:
<?php
function __call($name,$args)
$str = substr($name,0,5);
if($str == 'getby')
}
<?php
function __autoload($name) //$name就是類名
//include 'car.php';
//自動載入
$bmw = new car();
$bmw->run();
目錄結構(資料夾)結構:
model存放資料庫檔案
view存放介面視**件
controller存放控制器檔案
vendor:第三方的庫檔案
PHP魔術方法和魔術常量
具體的解釋如下 1。construct 例項化物件時被呼叫,當 construct和以類名為函式名的函式同時存在時,construct將被呼叫,另乙個不被呼叫。2。destruct 當刪除乙個物件或物件操作終止時被呼叫。3。call 物件呼叫某個方法,若方法存在,則直接呼叫 若不存在,則會去呼叫 c...
PHP魔術方法和魔術常量
具體的解釋如下 1。construct 例項化物件時被呼叫,當 construct和以類名為函式名的函式同時存在時,construct將被呼叫,另乙個不被呼叫。2。destruct 當刪除乙個物件或物件操作終止時被呼叫。3。call 物件呼叫某個方法,若方法存在,則直接呼叫 若不存在,則會去呼叫 c...
php魔術常量,魔術方法
魔術常量 1。line 返回檔案中的當前行號。2。file 返回檔案的完整路徑和檔名。如果用在包含檔案中,則返回包含檔名。自php4.0.2 起,file 總是包含乙個絕對路徑,而在此之前的版本有時會包含乙個相對路徑。3。function 返回函式名稱 php4.3.0 新加 自php5 起本常量返...