我正在尋找更好地瞭解靜態方法如何在php中工作。我一直在閱讀關於static keyword的php手冊網站的文章,內容涉及方法和類對象,我對某些東西感到好奇。PHP和靜態類方法
可以說我有這個類:
class Something{
protected static $_something = null;
public function __construct($options = null){
if(self::$_something === null && $options != null){
self::$_something = $options
}
}
public function get_something(){ return self::$_something }
}
所以你實例化這個上index.php
,所以你做這樣的事情:
$class_instantiation = new Something(array('test' => 'example'));
大,在這一點上$_something
包含key=>value
陣列,在這同一頁我們可以做:
var_dump($class_instantiation->get_something()); // var dumps the array we passed in.
但
如果我們現在創建sample.php
做:
$class_instantiation = new Something();
var_dump($class_instantiation->get_something());
我們得到null
回來(我假設你去index.php
,實例化的類和數組中傳遞,只見var_dump
THEN導航至sample.php
。這是可以理解如何將返回null
,如果你只去sample.php
沒有首先去index.php
)
我認爲靜態方法是「保存跨類的所有實例」,所以我應該能夠實例有或不具有傳遞到構造一個對象的類,假設的東西是存在的,找回我的陣列,我們對index.php
創造所以我的問題是:
如何靜態方法真的來講工作班?如果我只是傳遞對象,是否有辦法做到我正在嘗試使用第三方工具?
靜態屬性意味着有永遠只能是財產的一個'instance'不管是誰很少或多少你創建的類的實例;和static!== persistent –
另外作爲一個側面說明,最好使用'static ::'而不是'self ::'。 – Mahdi