php魔術常量和魔術方法

2021-08-29 23:15:41 字數 3053 閱讀 3321

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 起本常量返...