PHP中的物件導向OOP中的魔術方法

2022-07-24 15:09:29 字數 2691 閱讀 9101

一、什麼是魔術方法:

php為我們提供了一系列用__開頭的函式,這些函式無需自己手動呼叫,會在合適的時機自動呼叫,這類函式稱為魔術函式。

例如:

function __construct(){}在new乙個新物件時自動呼叫此函式

二、php中都有那些魔術方法,以及它們的作用:

1.__construct():建構函式,new物件時自動呼叫

eg:

class

person

}

在new新的person物件時會自動呼叫__construct()

函式,將傳入的引數分別賦給$name,$age。

2.__destruct():析構函式,當乙個物件被銷毀前自動呼叫

class

person

}

同上所述,物件被銷毀時執行此魔術方法

3.__get():訪問類中私有屬性時自動呼叫,傳遞讀取屬性名,返回$this->屬性名

class

person

}

如上**,$name被設為私有屬性後不能直接通過$this->name;的方式讀取,因此需要設定__get()魔術方法來讀取。

4.__set():給類的私有屬性賦值時自動呼叫,傳遞需設定的屬性名,屬性值

class

person

}

同__get()方法,私有屬性不能通過$this->name="aaa";的方式直接設定,需要設定__set()方法,傳入的引數分別是屬性名和屬性值。

5.__isset():使用isset檢測物件私有屬性時呼叫,傳遞檢測的屬性名,返回isset($this->屬性名)

class

person

}

使用isset檢測物件私有屬性時呼叫

,其他同上。

6.__unset():使用unset()函式刪除物件私有屬性時呼叫,傳遞刪除的屬性名,方法中執行unset($this->屬性名)

classperson

}

同上,在用unset()函式刪除私有屬性時呼叫。

7.__tostring():使用echo列印物件時呼叫,返回列印物件時想要顯示的內容,返回必須是字串

class

person;

\$age=>;

str;

return

$str

; }

}

使用echo列印物件時呼叫,返回列印物件時想要顯示的內容

。8.__call():呼叫乙個類中未定義的或未公開的方法時自動呼叫,傳遞被呼叫的函式名及引數列表

class

person,引數列表";

print_r($funcparams

);

echo "不存在/未公開";

}}$zhangsan=new person();

$zhangsan->say(1,2,3);

如**所示,呼叫不存在的say(1,2,3);時,會列印

您呼叫的函式way,引數列表array ( [0] => 123 ) 不存在

9.__clone():當使用clone關鍵字,轉殖乙個物件時自動呼叫,作用是為新轉殖的物件初始化賦值

class

person

}

$zhangsan=new person("zhangsan",24);

$lisi=clone

$zhangsan

;echo

$lisi->name;

列印出的結果是"lisi",而不是"zhangsan"。

10.__sleep():物件序列化時自動呼叫,返回乙個陣列,陣列中的值就是可以序列化的屬性

class

person

}

如上述**,在用serialize()序列化物件時只有"name","age"屬性會被序列化。

11.__wakeup():物件反序列化時自動呼叫,為反序列化新產生的物件進行初始化賦值

class

person

}

將物件序列化後再反序列化,同時給物件的name屬性賦初值為"lisi"。

12.__autolode():需要在類外部宣告函式,當例項化乙個未宣告的類時自動呼叫,傳遞例項化的類名

,可以使用類名自動載入對應的類檔案。

function __autoload($classname

)

$zhangsan=new

person();

$zhangsan->say();

如上述**,person類不存在時呼叫__autolode()

方法,載入寫在檔案外的類,"class/".strtolower($classname).".class.php"

;就是類檔案的相對路徑,$classname

就是不在本檔案中的類的類名,因此在建立外部類檔案時命名方式必須是小寫的類名.class.php。__autolode()方法

也是惟一乙個不用寫在類中的魔術方法。

以上就是php中的魔術方法,合理利用這些方法可以輕鬆實現物件的各種操作。

c 中物件導向oop中的類定義

類宣告 以資料成員的方式描述資料部分,以成員函式的方式 又被成為方法 來描述公有介面。類方法定義 如何實現類成員函式。ifndef pch h define pch h include include class students endif 以上是我寫的乙個學生資訊管理系統中學生類,通常類定義放在...

php物件導向分頁,PHP中物件導向的分頁類

page new page 53,10 p page rendor echo var dump p echo 分頁類 class page protected url url protected pagecount 總頁數 protected total 總條數 protected num 每頁顯示...

php中的OOP語法

類宣告 class classname extends parentclass 其中,extends parentclass為繼承 php中不支援域限定符 private,public,protected等,因此所有的變數可以說都是public的。類成員宣告 var a1 類成員的使用 this a...