欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

開(kāi)啟PHP Static 關(guān)鍵字之旅模式

 更新時(shí)間:2015年11月13日 15:33:22   投稿:mrr  
靜態(tài)成員是一種類(lèi)變量,可以把它看成時(shí)屬于整個(gè)類(lèi)而不是屬于類(lèi)的某個(gè)實(shí)例。與一般的實(shí)例變量不同的是,靜態(tài)成員只保留一個(gè)變量值,而這個(gè)變量值對(duì)所有的實(shí)例都是有效的,也就是說(shuō),所有的實(shí)例共享這個(gè)成員,跟著小編一起去探討php static關(guān)鍵字吧

聲明類(lèi)成員或方法為static,就可以不實(shí)例化類(lèi)而直接訪問(wèn)。不能通過(guò)一個(gè)對(duì)象來(lái)訪問(wèn)其中的靜態(tài)成員(靜態(tài)方法除外)。

為了兼容PHP4,如果沒(méi)有指定“可見(jiàn)性”,屬性和方法默認(rèn)為public。

由于靜態(tài)方法不需要通過(guò)對(duì)象即可調(diào)用,所以偽變量$this在靜態(tài)方法中不可用。

靜態(tài)屬性不可以由對(duì)象通過(guò)->操作符來(lái)訪問(wèn)。

用::方式調(diào)用一個(gè)非靜態(tài)方法會(huì)導(dǎo)致一個(gè)E_STRICT級(jí)別的錯(cuò)誤。

就像其它所有的PHP靜態(tài)變量一樣,靜態(tài)屬性只能被初始化為一個(gè)字符值或一個(gè)常量,不能使用表達(dá)式。 所以你可以把靜態(tài)屬性初始化為整型或數(shù)組,但不能指向另一個(gè)變量或函數(shù)返回值,也不能指向一個(gè)對(duì)象。

PHP5.3.0之后,我們可以用一個(gè)變量來(lái)動(dòng)態(tài)調(diào)用類(lèi)。但該變量的值不能為關(guān)鍵字self, parent 或static。

Example #1 靜態(tài)成員代碼示例

<?php
class 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之后可以動(dòng)態(tài)調(diào)用
print Bar::$my_static . " ";
$bar = new Bar();
print $bar->fooStatic() . " ";
?>

Example #2 靜態(tài)方法代碼示例

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

關(guān)于static 中靜態(tài)變量和靜態(tài)方法的總結(jié)

靜態(tài)變量

靜態(tài)變量是只存在于函數(shù)作用域的變量,不過(guò),在函數(shù)執(zhí)行完成后,這種變量的值不會(huì)丟失,也就是說(shuō),在下一次調(diào)用這個(gè)函數(shù)時(shí),變量仍然會(huì)記得原來(lái)的值。要將某個(gè)變量定義為靜態(tài)的,只需要在變量前加上 static 關(guān)鍵字即可。

在類(lèi)中,static關(guān)鍵字有兩種主要用法,一是用來(lái)定義靜態(tài)成員,一是用來(lái)定義靜態(tài)方法。在類(lèi)的內(nèi)部,可以使用作用域限定符 (::) 來(lái)訪問(wèn)不同層次作用域的變量。

靜態(tài)方法

靜態(tài)方法和非靜態(tài)方法之間有一個(gè)重要的區(qū)別:在調(diào)用靜態(tài)方法時(shí),不再需要擁有類(lèi)的實(shí)例。

靜態(tài)方法和非靜態(tài)方法使用原則:一是如果某個(gè)方法中不包含$this變量,就應(yīng)該時(shí)靜態(tài)方法;如果不需要類(lèi)的實(shí)例,可能還應(yīng)該使用靜態(tài)類(lèi),這樣可以免去實(shí)例化類(lèi)的工作。另,在靜態(tài)方法中時(shí)不能使用$this變量的,因?yàn)殪o態(tài)方法不屬于某個(gè)特定的實(shí)例。

相關(guān)文章

最新評(píng)論