コード例 #1
0
ファイル: FilterChain.php プロジェクト: miztaka/teeple2
 /**
  * FilterChainの最後にFilterを追加
  *
  * @param   string  $name   Filterのクラス名
  * @param   string  $alias  Filterのエイリアス名
  * @param   array   $attributes Filterの属性値
  */
 public function add($name, $alias = '', $attributes = NULL)
 {
     // エイリアス名が指定されていない場合はクラス名をセット
     if (empty($alias)) {
         $alias = $name;
     }
     // Filterの実行が既に始まっていたらエラー(実行後の追加はエラー)
     if ($this->_index > -1) {
         throw new Teeple_Exception("既にフィルターが実行されています。");
     }
     // Filterのクラス名が不正だったらエラー
     if (!preg_match("/^[0-9a-zA-Z_]+\$/", $name)) {
         throw new Teeple_Exception("フィルターのクラス名が不正です。({$name})");
     }
     // 既に同名のFilterが追加されていたら何もしない
     if (isset($this->_list[$alias]) && is_object($this->_list[$alias])) {
         $this->log->info("このFilterは既に登録されています({$name}[alias:{$alias}])");
         return;
     }
     // オブジェクトの生成に失敗していたらエラー
     $className = "Teeple_Filter_" . ucfirst($name);
     $filter = $this->container->getComponent($className);
     if (!is_object($filter)) {
         throw new Teeple_Exception("Filterオブジェクトの生成に失敗しました。({$name})");
     }
     if (is_array($attributes)) {
         $filter->setAttributes($attributes);
     }
     $this->_list[$alias] = $filter;
     $this->_position[] = $alias;
     return;
 }
コード例 #2
0
 /**
  * ConverterのListを生成
  *
  * @param   array   $params Convertする条件が入った配列
  * @access  private
  * @since   3.0.0
  */
 private function _buildConverterList($params)
 {
     foreach ($params as $key => $value) {
         $key = preg_replace("/\\s+/", "", $key);
         $value = preg_replace("/\\s+/", "", $value);
         if ($key == "") {
             throw new Teeple_Exception("Converterの設定が不正です。");
         }
         //
         // $key は attribute.name のパターン
         //
         $keyArray = explode(".", $key);
         if (count($keyArray) != 2) {
             throw new Teeple_Exception("Converterのキーが不正です。");
         }
         $attribute = $keyArray[0];
         // 属性の名前
         $name = $keyArray[1];
         // Converterの名前
         $className = "Converter_" . ucfirst($name);
         //
         // 既に同名のConverterが追加されていたら何もしない
         //
         if (isset($this->_list[$name]) && is_object($this->_list[$name])) {
             continue;
         }
         //
         // オブジェクトの生成に失敗していたらエラー
         //
         $converter = $this->container->getComponent($className);
         if (!is_object($converter)) {
             throw new Teeple_Exception("Converter {$className} の生成に失敗しました。");
         }
         $this->_list[$name] = $converter;
     }
 }