function loadComponentClass($name) { include_once 'teeple/Util.php'; Teeple_Util::includeClassFile($name); }
/** * コンポーネントをインスタンス化します。 * * @param string $name * @return Object */ private function _createComponent($name, $register = TRUE) { $this->log->debug("コンポーネント {$name} を作成します。"); // インスタンスを作成 if (isset(self::$namingDefs[$name])) { $className = self::$namingDefs[$name]; $this->log->debug("クラス名は {$className}です。"); } else { $className = $name; } if (!Teeple_Util::includeClassFile($className)) { throw new Teeple_Exception("クラス{$className}の定義が存在しません。"); } $instance = new $className(); if ($register) { $this->register($name, $instance); } // 自動インジェクション $methods = get_class_methods($className); foreach ($methods as $method) { if (preg_match('/^setComponent_(.+)$/', $method, $m)) { $this->log->debug("自動セット: {$m[1]}"); $cp = $this->getComponent($m[1]); $instance->{$method}($cp); } elseif (preg_match('/^setSessionComponent_(.+)$/', $method, $m)) { $this->log->debug("自動セット(s): {$m[1]}"); $cp = $this->getSessionComponent($m[1]); $instance->{$method}($cp); } elseif (preg_match('/^setPrototype_(.+)$/', $method, $m)) { $this->log->debug("自動セット(p): {$m[1]}"); $cp = $this->getPrototype($m[1]); $instance->{$method}($cp); } elseif (preg_match('/^set(Entity_.+)$/', $method, $m)) { $this->log->debug("自動セット(e): {$m[1]}"); $cp = $this->getEntity($m[1]); $instance->{$method}($cp); } } return $instance; }