一文徹底搞懂php的后期靜態(tài)綁定舉例講解
舉個例子說明
看了很多人的解釋,都是照搬文檔,說得非常抽象。
這里我舉個例子說明一下,應(yīng)該很多人能秒懂。
<?php interface FactoryInterface { public function create(); } abstract class Factory implements FactoryInterface { public static $instance = null; public function create() { throw new \Exception('Please implement create method.'); } public static function getInstance() { if (is_null(self::$instance)) { self::$instance = new static(); } return self::$instance; } } class Car { public function run() { echo "I'm running"; } } class CarFactory extends Factory { public function create() { return new Car(); } } CarFactory::getInstance()->create()->run();
上面這個抽象類的getInstance
靜態(tài)方法中,我想實例化一個子類,怎么辦?除了new static
, 沒有別的方法,因為你根本不知道子類的名稱到底是什么,它可以被命名成任意合法的名稱。
還有其它場景,比如說在父類的靜態(tài)方法中調(diào)用子類的靜態(tài)方法,怎么辦?也是一樣static::childMethod()
結(jié)語
結(jié)合上面的例子和你自己的感悟,再去讀一讀文檔中的說明,是不是清晰了很多?
以上就是一文徹底搞懂php的后期靜態(tài)綁定舉例講解的詳細(xì)內(nèi)容,更多關(guān)于php后期靜態(tài)綁定的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
php將print_r處理后的數(shù)據(jù)還原為原始數(shù)組的解決方法
下面小編就為大家?guī)硪黄猵hp中將print_r處理后的數(shù)據(jù)還原為原始數(shù)組的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考2016-11-11PHP和JAVA中的重載(overload)和覆蓋(override) 介紹
PHP不支持方法和操作符重載。JAVA不支持操作符的重載(但是“+”實際上是一種操作符重載)2012-03-03