註冊樹模式是把對象掛到一個類的屬性數組裏,下次直接在這個數組裏面取,保持全局惟一,通常在項目入口初始化的時候有用到。在workerman中一開始的就是個註冊樹模式的運用,下面是對他的模擬php
<?php class Worker{ protected static $_workers=array(); public function __construct() { $this->workerId=spl_object_hash($this); static::$_workers[$this->workerId]=$this; } public static function runAll(){ foreach (static::$_workers as $worker) { var_dump($worker); } } } new Worker(); new Worker(); Worker::runAll();
在Worker的構造函數中,把當前new的對象掛到了Worker類的靜態變量屬性數組裏,在下次使用的時候直接在那個數組裏取數組