Esempio n. 1
0
/**
 * @param array &$Response объект ответа
 *
 * @return string контент клиенту
 */
function toString(array &$Response)
{
    $Application =& ServiceManager\get(getServiceManager($Response), 'Application');
    switch (Application\getMode($Application)) {
        case Application\MODE_CLI:
            return toStringCli($Response);
            break;
        case Application\MODE_WEB:
            return toStringWeb($Response);
            break;
        default:
            trigger_error('Неизвестный режим запуска', E_USER_ERROR);
    }
}
Esempio n. 2
0
/**
 * Определяет роутинг по запросу
 *
 * @param array &$Router объект роута
 */
function match(array &$Router)
{
    $Request =& getRequest($Router);
    switch (Application\getMode(getApplication($Router))) {
        case Application\MODE_CLI:
            // Запрос в cli-режиме
            if (Request\getArgc($Request) < 3) {
                trigger_error('Отсутствует имя скрипта', E_USER_ERROR);
            }
            $Router[FIELD_ROUTE_NAME] = 'script';
            setControllerName($Router, ucfirst(Request\getArgv($Request)[1]));
            setActionName($Router, 'run');
            break;
        case Application\MODE_WEB:
            // Запрос в web-режиме
            $documentUri = Request\getDocumentUri($Request);
            $matches = explode('/', trim(strtolower($documentUri), '/'));
            $count = count($matches);
            if ($count != 1 && $count != 2) {
                // TODO роутинг на страницу с ошибкой
                trigger_error('TODO', E_USER_ERROR);
            }
            $pattern = '/' . $matches[0];
            $found = false;
            // Проходим по списку роутов и матчим подходящий
            foreach (getConfig($Router)[CONFIGURATION_WEB] as $name => $data) {
                if ($data[CONFIGURATION_PATTERN] === $pattern) {
                    setControllerName($Router, $data[CONFIGURATION_CONTROLLER]);
                    setActionName($Router, $count == 1 ? $data[CONFIGURATION_DEFAULT_ACTION] : $matches[1]);
                    $Router[FIELD_ROUTE_NAME] = $name;
                    $found = true;
                    break;
                }
            }
            if (!$found) {
                header('HTTP/1.0 404 Not Found');
                exit;
            }
            break;
    }
}