開啟PHP Static 關鍵字之旅模式_php執行個體

來源:互聯網
上載者:User

聲明類成員或方法為static,就可以不執行個體化類而直接存取。不能通過一個對象來訪問其中的靜態成員(靜態方法除外)。

為了相容PHP4,如果沒有指定“可見度”,屬性和方法預設為public。

由於靜態方法不需要通過對象即可調用,所以偽變數$this在靜態方法中不可用。

靜態屬性不可以由對象通過->操作符來訪問。

用::方式調用一個非靜態方法會導致一個E_STRICT層級的錯誤。

就像其它所有的PHP靜態變數一樣,靜態屬性只能被初始化為一個字元值或一個常量,不能使用運算式。 所以你可以把靜態屬性初始化為整型或數組,但不能指向另一個變數或函數傳回值,也不能指向一個對象。

PHP5.3.0之後,我們可以用一個變數來動態調用類。但該變數的值不能為關鍵字self, parent 或static。

Example #1 靜態成員程式碼範例

<?phpclass Foo{  public static $my_static = 'foo';  public function staticValue() {    return self::$my_static;  }}class Bar extends Foo{  public function fooStatic() {    return parent::$my_static;  }}print Foo::$my_static . " ";$foo = new Foo();print $foo->staticValue() . " ";print $foo->my_static . " ";   // Undefined "Property" my_static print $foo::$my_static . " ";$classname = 'Foo';print $classname::$my_static . " "; // PHP 5.3.0之後可以動態調用print Bar::$my_static . " ";$bar = new Bar();print $bar->fooStatic() . " ";?>

Example #2 靜態方法程式碼範例

<?phpclass Foo {  public static function aStaticMethod() {    // ...  }}Foo::aStaticMethod();$classname = 'Foo';$classname::aStaticMethod(); // As of PHP 5.3.0?>

關於static 中靜態變數和靜態方法的總結

靜態變數

靜態變數是只存在於函數範圍的變數,不過,在函數執行完成後,這種變數的值不會丟失,也就是說,在下一次調用這個函數時,變數仍然會記得原來的值。要將某個變數定義為靜態,只需要在變數前加上 static 關鍵字即可。

在類中,static關鍵字有兩種主要用法,一是用來定義靜態成員,一是用來定義靜態方法。在類的內部,可以使用範圍限定符 (::) 來訪問不同層次範圍的變數。

靜態方法

靜態方法和非靜態方法之間有一個重要的區別:在調用靜態方法時,不再需要擁有類的執行個體。

靜態方法和非靜態方法使用原則:一是如果某個方法中不包含$this變數,就應該時靜態方法;如果不需要類的執行個體,可能還應該使用靜態類,這樣可以免去執行個體化類的工作。另,在靜態方法中時不能使用$this變數的,因為靜態方法不屬於某個特定的執行個體。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.