導航:首頁 > 編程語言 > php受保護的方法

php受保護的方法

發布時間:2024-02-09 03:03:27

php如何調用類中的protected方法

classControllercommonfooter{
protectedfunctionindex(){
echo'abcd';
}
}

$reflection_class=newReflectionClass('Controllercommonfooter');
var_mp($reflection_class);#output_1
$reflection_method=$reflection_class->getMethod('index');
var_mp($reflection_method);#output_2
var_mp($reflection_method->isProtected());#output_3

$class='Controllercommonfooter';
$method='index';
$args=array();

$controller=new$class();
$controller->$method($args);

⑵ php彈出「undefined property:stdclass」 ,怎麼解決

這種情況一般是你對一個類對象,使用了屬性調用造成的。

比如應該是

echo$a->att1;


你寫錯成了:

echo$a['att1'];


改回來就可以了。

PHP中使用關鍵字 class 來定義一個類。類的命名一般使用首字元大寫,而後每個單詞首字元大寫連接的方式方便閱讀。


在PHP5中,屬性指在class 中聲明的變數。在聲明變數時,必須使用 public private protected 之一進行修飾,定義變數的訪問許可權。PHP中的屬性:用來描述對象的數據元素稱為對象的屬性(也稱為數據/狀態)

Public(公開): 可以自由的在類的內部外部讀取、修改。


Private(私有): 只能在這個當前類的內部讀取、修改。


Protected(受保護):能夠在這個類和類的子類中讀取和修改。屬性的使用:通過引用變數的 -> 符號調用變數指向對象的屬性。


在方法內部通過 $this-> 符號調用同一對象的屬性。

所以應該用箭頭調用而不是括弧。

⑶ php class中public,private,protected,static

1. public:許可權是最大的,可以內部調用,實例調用

2. protected: 受保護類型,用於本類和繼承類調用

常用場景在許可權設置

有需要用到許可權的Class,只要繼承Base這個Class即可用到登錄驗證。執行Login的時候會先運行Base裡面的方法

3. private: 私有類型,只有在本類中使用。

4. static: 一般是在傳值的時候使用,表示值不會被修改,默認為public,可用::訪問

⑷ 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 的public作用

從PHP5.0版本開始,對象聲明時需要聲明對象屬性和方法的可見性,public關鍵字表示屬性或方法是公開可見的。

在PHP5.0之前未支持對象屬性和方法的可見性定義,默認所有的屬性和方法都是公開可見的,如以下的對象聲明:

//例1
classObj{
var$name='Obj';
functiongetName(){
return$this->name;
}
}

而PHP5開始推薦寫法為:

//例2
classObj{
protected$name='Obj';
publicfunctiongetName(){
return$this->name;
}
}

對於例1來說,實際上可以直接訪問name屬性,從而繞過getName方法,如

$obj=newObj();
echo$obj->name;

而對於例2來說,由於$name屬性是protected(受保護的),因此必須使用getName方法才能得到$name屬性的值。

同時這也是面向對象語言通用的一種聲明方式。

public: 公開可見

protected: 對象內部可見 (該對象的子對象同樣可以訪問)

private: 對象自身內部可見 (不包含該對象的子對象,或者說private屬性和方法不會被繼承)

⑹ php怎麼理解這些個關鍵字啊,public;private;protect;final;static;const;我感覺這

public: 公有屬性或方法
在子類中可以通過self::var 或self::method 來調用,可以通過parent::method來調用父類中的方法,但不能調用公有屬性.
在實例中可以通過$obj->var或self::method 來調用
protected: 受保護類型
在子類中可以通過self::var 或self::method調用,可以通過parent::method來調用父類中的方法
在實例中不能通過$obj->var 來調用 protected類型的方法或屬性
private: 私有類型
該類型的屬性或方法只能在該類中使用,在該類的實例、子類中、子類的實例中都不能調用私有類型的屬性和方法
再來說說final
1.final不能用來修飾成員屬性
2.final只能修飾類和方法
作用:被修飾的類不能被子類所繼承;被修飾的方法不能被子類的方法覆蓋。
然後來說說static
1.static用來修飾成員屬性和成員方法,但不能用來修飾類
2.用static修飾的成員屬性可以被同一個類的所有對象共享
3.靜態的數據是存在 內存中的 數據段中(初始化靜態段)
4.靜態的數據是在類在第一次載入時,分配到內存中的
5.什麼是類被載入?只要在程序中使用到這個類(有這個類名出現)
6.靜態的成員屬性都要用類名去訪問,不用創建對象,不用對象去訪問;在類里邊可以用self代表本類($this)
7.靜態方法,不能訪問非靜態的成員屬性(但是,在非靜態方法卻能訪問靜態的成員屬性),非靜態的成員屬性,必須用對象訪問,在內部訪問非靜態成員屬性,用$this.
8.如果你確定一個方法中不需使用到非靜態的成員屬性,則可以將這個方法聲明為靜態方法,不需實例化對象,就可以訪問
最後來說說const
1.它只能用來修飾成員屬性
2.在類中聲明常量必須使用const
3.訪問方式和訪問靜態成員屬性一樣(類外使用 類名::成員屬性,類里邊則使用self::成員屬性)
4.常量一定要在聲明的時候就給初始值

⑺ PHP中private和public還有protected的區別

public:聲明方法和屬性可以被隨意訪問。
Protected:聲明的方法和屬性只能被類本身和其繼承子類訪問。
private:只能被定義屬性和方法的類訪問。

private 是完全私有的,只有當前類中的成員能訪問到.
protected 是受保護的,只有當前類的成員與繼承該類的類才能訪問.

protected的訪問權介於public和private之間,實際上三者的區別就是許可權問題,private和protected區別主要體現在其繼承類的訪問許可權上,這些你可以自己編寫一個程序,寫個類,編譯一下你就很清楚他們許可權的區別了。

私有成員private member
只能被成員函數和類的友元訪問
實行信息隱藏的類把其數據成員聲明為private

被保護成員protected member
對派生類derived class 就像public 成員一樣
對其他程序則表現得像private

閱讀全文

與php受保護的方法相關的資料

熱點內容
單片機中rs0與rs1 瀏覽:319
天貓真空壓縮袋 瀏覽:484
一加文件夾彈出位置 瀏覽:134
尊貴冰箱壓縮機 瀏覽:989
基於單片機的手機充電器 瀏覽:734
銀行家演算法可以解決臨界區問題嗎 瀏覽:127
保密櫃解壓的文件 瀏覽:854
黑色主題的c編譯器 瀏覽:680
米思齊編譯成功無法上傳 瀏覽:894
java多態實現方式 瀏覽:336
電視的伺服器是什麼意思 瀏覽:998
mac安裝虛擬機linux 瀏覽:845
h3c命令查詢 瀏覽:608
貸款買車時拿到了綠本不用解壓 瀏覽:805
網路游戲客戶端編程 瀏覽:208
當代政治哲學pdf 瀏覽:276
我的世界國際版的伺服器怎麼進不去 瀏覽:739
十分鍾帶你反編譯 瀏覽:695
vi命令行模式 瀏覽:612
安卓手機如何做到手勢截屏 瀏覽:386