/** * RESTパラメータに合わせたパスを取得します。 * * @param string $entry RESTエントリポイント。 * @return string パス。 */ private static function getPath($entry) { $cwd = Environment::getCurrentDirectory(); $path = "{$cwd}/rest/{$entry}.php"; $exists = $entry === Constants::REST_ERROR || file_exists($path); return $exists ? $path : self::getPath(Constants::REST_ERROR); }
/** * メッセージIDを取得します。 * * @param IContext $storage コンテキストに備えられているワーク領域。 * @return integer メッセージID。 */ private static function innerGetMessageId(array $storage = null) { if (!is_null($storage) && isset($storage[Constants::DATA_MESSAGE_ID])) { return $storage[Constants::DATA_MESSAGE_ID]; } $rest = Environment::getRestParams(); if (count($rest) >= 2 && $rest[0] == 'error' && is_numeric($rest[1])) { return intval($rest[1]); } return self::DEFAULT_STATUS; }
/** カレントディレクトリ値を改変する */ protected function setCurrentDirectory(array &$world, array $arguments) { $this->assertEquals(1, count($arguments), '引数は 1 つ必要'); Environment::setCurrentDirectory(getcwd() . $arguments[0]); }
/** 存在しないカレントディレクトリ値は設定できない */ protected function errorIfSetInvalidDirectory(array &$world, array $arguments) { $this->assertEquals(1, count($arguments), '引数は 1 つ必要'); $callback = function () use($world, $arguments) { Environment::setCurrentDirectory($arguments[0]); }; $this->assertException($callback, 'InvalidArgumentException', "The path does not exist. :{$arguments[0]}"); }
/** * XMLを作成します。 * * @param string $message ステータス メッセージ。 * @param string $query 初期状態の入力文。 * @param bool $result 処理に成功したかどうか。 * @param bool $dynamic 動的ページかどうか * (検索エンジンのインデックスを認めるかどうか) * @param string $language 言語。 * @return DOMDocument XML DOMドキュメント。 */ public function createXml($message, $query, $result, $dynamic, $language = 'en') { $attributes = array('xml:lang' => $language, 'root' => Environment::getBasePath(), 'query' => $query, 'result' => $result ? 'true' : 'false', 'message' => $message, 'dynamic' => $dynamic ? 'true' : 'false'); return Output::createXml($attributes); }
$trimmed = preg_replace('/(^\\/|\\/$)/', '', $uri); $splited = empty($trimmed) ? array() : explode('/', $trimmed); return array_map('self::splitMapper', $splited); } /** * 配列からカンマ区切り文字列を探し、分割するためのコールバックです。 * * @param string $item 分割対象文字列。 * @return mixed 分割された配列。分割不能な場合、引数をそのまま返します。 * @SuppressWarnings(PHPMD) */ private static function splitMapper($item) { $result = explode(',', $item); return count($result) === 1 ? $result[0] : $result; } /** * 環境変数から基底パスを抽出・取得します。 * * @param array $params 環境変数値を格納した連想配列。 * @return string 基底パス文字列。環境変数から取得できなかった場合、"."。 */ private static function getBasePathFromEnvironment(array $params) { $path = isset($params[self::PHP_PATH]) ? $params[self::PHP_PATH] : ''; $info = pathinfo($path); return isset($info['dirname']) ? $info['dirname'] : '.'; } } Environment::initialize();
/** 環境設定をリセットする */ protected function resetParams(array &$world, array $arguments) { Environment::setValues(); }