《PHP-靜態與非靜態的區別》

1、非靜態修飾類成員屬性和方法
允許外部訪問的情況下,只能用實例化對象箭頭的形式訪問類的屬性和方法;
在類的內部,成員屬性只能用箭頭的形式訪問 $this->,方法可以用箭頭 $this->也可以用self::調用
1-1、外部訪問時,例:
$obj = new Obj();
echo $obj->name;
echo $obj->getName();
1-2、內部訪問時,例:
echo $this->name;
echo $this->getName();

echo self::getName();

2、靜態static修飾類成員屬性和方法
允許外部訪問的情況下,通常情況下,不用實例化對象,直接可用 class:: 調用;
外部使用時:
類成員屬性可以直接不用實例化class:: 調用,也可以實例化後,對象調用 $obj::, 類方法除了可以用實例化class:: 調用和實例化對象 $obj:: 調用外,還可以用實例化對象箭頭方式調用 $obj-> ;
內部訪問時:
成員屬性可以用self:: 或是 類本身Obj:: 直接調用,
類方法除了可以用self:: 或是 類本身 Obj:: 調用外,還可以用 $this-> 調用。
2-1、外部訪問時,例:
//成員屬性
echo Obj:: $name;
或者
$obj = new Obj();
echo $obj:: $name;
//方法
echo Obj:: $getName();
或者
$obj = new Obj();
echo $obj:: $getName();
echo obj>obj->getName();
2-2、內部訪問時,例:
//成員屬性
echo self::$name;
echo Obj:: $name;
//方法
echo self :: getName();
echo Obj::getName();
echo $this->getName();
小總結:
根據以上所述,只要是非靜態修飾的類成員屬性和方法,用箭頭->訪問沒錯;
或者說只要是靜態static修飾的成員屬性和方法,用雙冒號:: 訪問沒錯,
成員屬性都比較遵循規則,方法比較特殊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章