Example #1
0
 public static function createFactory($spec = null)
 {
     if (is_null($spec) || is_array($spec)) {
         return new FactoryClosure($spec);
     }
     if (is_object($spec)) {
         $f = new FactoryClosure([]);
         $f->registerByObject($spec);
         return $f;
     }
     throw new Exception\InvalidSpec(__CLASS__, __METHOD__, $spec);
 }
Example #2
0
 /**
  * ファクトリの登録
  *
  * @param string $name
  * @param callable $spec 
  */
 public function register($name, $spec = null)
 {
     if (is_array($name) && $spec === null) {
         foreach ($name as $k => $v) {
             $this->register($k, $v);
         }
         return $this;
     }
     // ログイベントをディスパッチする
     $this->dispatch('log.notice', ['message' => "{$name} is registered"]);
     // キャッシュをクリアする
     $this->_instance_store->clear($name);
     // Specが生オブジェクトであればキャッシュを登録する
     if (is_object($spec) && !$spec instanceof \Closure) {
         $this->_instance_store->set($name, $spec);
         return $this;
     }
     parent::register($name, $spec);
     return $this;
 }