/** * 指定されたconfigで変換を実行します。 * * @param mixed $obj * @param array $config */ public function execute(&$obj, &$config) { foreach ($config as $fieldName => $fieldConfig) { foreach ($fieldConfig as $converterName => $attr) { // Converterインスタンスを作成 $converter = $this->container->getPrototype("Teeple_Converter_" . ucfirst($converterName)); if (!is_object($converter)) { throw new Teeple_Exception("Converterのインスタンスを作成できません。({$converterName})"); } // 属性をセット foreach ($attr as $key => $value) { $converter->{$key} = $value; } // Converterを実行 if ($fieldName == self::FIELD_ALL) { $keys = Teeple_Util::getPropertyNames($obj); } else { $keys = array($fieldName); } foreach ($keys as $key) { if (!$converter->convert($obj, $key)) { $this->log->info("{$converterName}は{$key}に対して実行されませんでした。"); } } } } return; }
/** * 指定されたconfigでバリデーションを実行します。 * エラーがあった場合はエラーメッセージを組み立てて * Requestにメッセージを追加します。 * * @param object $obj * @param array $config * @return boolean */ public function execute($obj, &$config) { $result = TRUE; foreach ($config as $fieldConfig) { $fieldName = $fieldConfig['name']; foreach ($fieldConfig['validation'] as $validatorName => $attr) { // Validatorインスタンスを作成 $validator = $this->container->getPrototype("Teeple_Validator_" . ucfirst($validatorName)); if (!is_object($validator)) { throw new Teeple_Exception("Validatorのインスタンスを作成できません。({$validatorName})"); } // 属性をセット foreach ($attr as $key => $value) { $validator->{$key} = $value; } // Validatorを実行 if (!$validator->validate($obj, $fieldName)) { $result = FALSE; // エラーメッセージをセット $this->setErrorMessage($validator, $validatorName, $attr, $fieldConfig); break; } } } return $result; }
/** * Actionを追加する * * @param string $name Actionのクラス名 */ public function add($name) { // Actionのクラス名をチェック if (!preg_match("/^[0-9a-zA-Z_]+\$/", $name)) { throw new Teeple_Exception("Actionクラス名が不正です。"); } // Actionクラスのインスタンス化 $className = Teeple_Util::capitalizedClassName($name); $action = $this->container->getPrototype($className); $base = 'Teeple_ActionBase'; if (!is_object($action) || !$action instanceof $base) { throw new Teeple_Exception("Actionクラスの生成に失敗しました。({$className})"); } array_push($this->_list, $action); return; }
/** * 新しいトランザクションを取得します。 * * @return Teeple_Transaction */ public function getTransaction() { $tx = $this->container->getPrototype('Teeple_Transaction'); $this->txs[] = $tx; return $tx; }