導航:首頁 > 編程語言 > php面向對象魔術方法

php面向對象魔術方法

發布時間:2022-07-18 03:14:38

⑴ 求解,php面向對象魔術方法問題,上代碼:

不需要在調用魔術方法的時候 寫echo那行代碼,注釋掉那行即可。
調用魔術方法的__set/__get一個未定義的屬性時,此方法會被觸發了。
更具體原因和更深入的內容,推薦去研究下php的源碼,了解php內核的機制,你就一定會明白了。
推薦去看鳥哥的網站http://www.laruence.com/

⑵ php魔術方法__tostring

__tostring()方法:在直接輸出對象引用的時候,就不會產生錯誤,而是自動調用了__tostring()方法,輸出__tostring()方法中返回的字元串

通俗來說就是 對象一般是使用print_r() 或 var_mp() 來列印訪問

但對於一般閑的人來說直接 使用 echo 輸出對象時,必定會報錯的,原因是對象無法使用echo的。

這個時候如果想解決這個錯誤,咱們應該怎麼操作呢?

可以很好的利用__tostring()這個魔術方法

但是切記使用__toString() 時返回值一定要使用return 來進行返回。

<?php
header("content-type:text/html;charset=utf-8");
class demo{
public $foo;
public function __construct($foo){
$this->foo=$foo;
}
//定義一個__toString()方法時,返加一個成員屬性$foo
public function __toString(){
return $this->foo;
}
}
$demo=new demo('hello PHP成員');
echo $demo;

⑶ PHP面向對象有哪些魔術方法

__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(),__invoke(), __set_state(), __clone() 和 __debugInfo() 等方法在 PHP 中被稱為"魔術方法"(Magic methods)。

⑷ php魔術方法。。

在 PHP 里,將所有以 __(兩個下劃線)開頭的類方法保留為魔術方法,所以在定義類方法時,除了上述魔術方法,建議不要以 __ 為前綴。

魔術方法的引入是對面向對象編程思想的進一步實現,重載就是通過魔術方法來實現的。

PHP 魔術方法主要有:
__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(),__sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo() 等。

最常見的是__construct(), __destruct(),__get(), __set()等:

__construct和__destruct是類的構造函數和析構函數。

⑸ php什麼是魔術方法

__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 和
__debugInfo()
等方法在 PHP 中被稱為"魔術方法"(Magic
methods)。在命名自己的類方法時不能使用這些方法名,除非是想使用其魔術功能。

⑹ php魔術方法有哪些

1.constuct()構造函數
通常實例化完一個對象之後,都要對該對象的屬性進行初始化!在實例化一個對象的時候,PHP系統會自動的調用一個名字叫作construct()的方法,我們把這個方法叫作「構造方法」!
2.destruct()析構方法
與構造方法是一對,構造方法是在一個對象「出生」的時候由系統自動調用的,而析構方法是在一個對象「消失」的時候由系統自動調用的!
析構方法的名字叫destruct();注意裡面不能有任何的參數!
3.clone()克隆
觸發時機:是在克隆一個對象的時候,對新對象進行初始化的工作
4.autoload()自動載入類
當調用不存在的類的時候自動調用!
5.tostring()
當將對象當成字元串使用的時候自動調用
6.invoke()
當將對象當成函數使用的時候自動調用
7,set()
當對無法訪問的屬性賦值時自動調用(比如:類外調用私有屬性)
8.get()
當對獲取無法訪問的屬性值的時候自動調用
9.unset()
當銷毀無法訪問的屬性的時候自動調用
10.isset()
當判斷無法訪問的屬性是否存在的時候自動調用
11.call()
當調用無法訪問的普通方法時自動觸發

⑺ Php面向對象魔術方法有哪些

這個就有點多了,比如構造方法__construct,析構方法__destruct,克隆方法__clone,__set,__get等

⑻ php魔術方法怎麼用

在 PHP 里,將所有以 __(兩個下劃線)開頭的類方法保留為魔術方法。魔術方法的引入是對面向對象編程思想的進一步實現,重載就是通過魔術方法來實現的。主要有:
__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(),__sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo() 等函數。

⑼ php5中魔術方法函數有哪幾個,請舉例說明各自的用法

__construct() :實例化對象時被調用;
__destuct():當刪除一個對象或者對象操作終止是被執行;
__call():調用對象不存在方法時被調用;
__get():調用對象不存在的屬性時被調用;
__set():設置對象不存在的屬性時被調用;_
_toString():列印一個對象時被調用,比如echo $obj,print($obj);
__clone():克隆對象時被調用,比如$t = new Test();$tt = clone $t;
__sleep():serialize之前被調用,若對象比較大,想做一些刪除在序列化,可以考慮使用該方法;
__wakeup():unserialize之前被調用,做些對象的初始化;
__isset():檢測對象是否存在屬性的時候被調用,如 isset($c->name);
__unset():unset一個對象屬性時被調用,如:unset($c->name);
__set_state():調用var_export時被調用,用__set_state的返回值作為 var_export的返回值;,
__autoload():實例化一個對象時,如果對應的類不存在,在該方法被調用。
希望你能採納,謝謝。

⑽ PHP __get和__set魔術方法在面向對象中的使用問題

php的面向對象思想編程中聲明方法有三種不同的許可權:public protect private。
public:許可權是最大的,可以內部調用,實例調用等。
protected: 受保護類型,用於本類和繼承類調用。
private: 私有類型,只有在本類中使用。
這些許可權同樣可以應用在變數聲明中。
__set __get 都是php的魔術方法,主要是為了用來改變類的私有屬性用的。
你覺得麻煩可以將private私有的變數改為公共public變數,這個要看需求和個人對面向對象的思考。
追問 : 我想知道的是(用private封裝然後用__set或者__get )和(public設置類的屬性)有什麼不同.都可以取值賦值.
追答 : 沒什麼不同的,實現的效果都一樣,只是private是為了限制訪問入口少一些,或者之前用private時沒有考慮到有如今的調用情況,所以在加了set或get。 比較public是所有人都可以訪問,private是內部人可以訪問,從許可權來看,private會安全一些。

閱讀全文

與php面向對象魔術方法相關的資料

熱點內容
北京市網路加密系統 瀏覽:534
數碼編譯器怎麼看 瀏覽:715
女主角叫晚晚的小說 瀏覽:34
電影love百度雲 瀏覽:671
彼時曾相伴愛奇藝 瀏覽:129
趣拿app怎麼查周邊領取 瀏覽:365
男男搞基小電影 瀏覽:991
專門拍生孩子的電影 瀏覽:720
關於國共的電影 瀏覽:40
大陸拍到香港拍電影小說 瀏覽:585
java選擇性編譯 瀏覽:361
python創建一個全0數組 瀏覽:199
函數單獨進行編譯 瀏覽:974
李采潭蘑菇 瀏覽:229
紫軒小說手打版下載 瀏覽:59
電腦pdf閱讀器下載 瀏覽:772
30G電影下載 瀏覽:442
電影孝順女兒觀影問卷 瀏覽:472
怎麼自己造一個伺服器手機版 瀏覽:167
程序員製作連線題目 瀏覽:186