예제 #1
0
function loadComponentClass($name)
{
    include_once 'teeple/Util.php';
    Teeple_Util::includeClassFile($name);
}
예제 #2
0
 /**
  * コンポーネントをインスタンス化します。
  *
  * @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;
 }