-
Notifications
You must be signed in to change notification settings - Fork 39
Application
AntonShevchuk edited this page Sep 12, 2012
·
32 revisions
Наше приложение
Начинаем все с document root'a:
# setup environment
# for mixed app.APPLICATION_ENV.php with application.php
SetEnv APPLICATION_ENV production
Options +FollowSymlinks
Options -Indexes
<IfModule mod_rewrite.c>
RewriteBase /public/
RewriteEngine On
# loop stopping
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_URI} ^/(css|scripts|images|uploads) [OR]
RewriteCond %{REQUEST_URI} \.(jpe?g|png|gif|ico)$
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
</IfModule>
<?php
// public/index.php
// Environment
define('ENVIRONMENT_PRODUCTION', 'production');
define('ENVIRONMENT_DEVELOPMENT', 'development');
define('ENVIRONMENT_TESTING', 'testing');
define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : ENVIRONMENT_PRODUCTION));
// Debug mode for development environment only
if (isset($_COOKIE['BLUZ_DEBUG'])) {
define('DEBUG', true);
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);
} else {
define('DEBUG', false);
error_reporting(0);
ini_set('display_errors', 0);
}
// Paths
define('PATH_ROOT', realpath(dirname(__FILE__) . '/../'));
define('PATH_APPLICATION', PATH_ROOT . '/application');
define('PATH_DATA', PATH_ROOT . '/data');
define('PATH_LIBRARY', PATH_ROOT . '/library');
define('PATH_PUBLIC', PATH_ROOT . '/public');
define('PATH_THEME', PATH_ROOT . '/themes');
// Shutdown function for handle critical and other errors
register_shutdown_function('errorHandler');
// iframe header - prevent security issues
header('X-Frame-Options: SAMEORIGIN');
function errorHandler() {
$error = error_get_last();
if (!is_array($error)
|| !in_array($error['type'], array(E_ERROR, E_PARSE, E_CORE_ERROR, E_COMPILE_ERROR))) {
return;
}
require_once 'error.php';
}
// Try to run application
try {
// init loader
require_once PATH_LIBRARY . '/Bluz/_loader.php';
require_once PATH_APPLICATION . '/Bootstrap.php';
$app = \Application\Bootstrap::getInstance();
$app->init(APPLICATION_ENV)
->process()
->render();
} catch (Exception $e) {
require_once 'error.php';
}
Создаем симлинку на public либо изменяем baseUrl в конфигурационном файле и .htaccess. И запускаем скрипт install.sh
- Обрабатывается входящий запрос посредством объекта
Request
- Если это XMLHTTPRequest - то вызывается метод
useLayout(false)
- Запускается процессинг роутеров, который вносит коррективы в объект
Request
- Если есть входящий параметр
_json- то вызывается методuseJson(true)
- Запускается диспатч конкретного контроллера:
- Берётся рефлексия от контрроллера
- Бросается событие
dispatch - Проверяется доступ согласно
Acl - Проверяем попадание во
View\Cache - Еще раз перетираем параметры Request по текущим параметрам (могут отличаться)
- Инициализируем View контроллера
- Подключаем bootstrap.php данного модуля, если таковой есть
- Подключаем контроллер
- Запускаем функцию контроллера
- Обрабатываем ответ контроллера (описание можно найти на странице контроллера)
Методы/геттеры инициализации пакетов фреймворка:
- getAcl
- getAuth
- getCache
- getConfig
- getDb
- getEventManager
- getMessages
- getLayout
- getLoader
- getRegistry
- getRequest
- getRcl
- getRouter
- getSession
Ещё методы:
- getConfigData($section, $subsection) - возвращает конфигурацию системы, можно указать конкретный узел
- hasMessage - проверяет был ли инициализирован пакет Messages
- log($message) - системное логирование
Методы для работы с выводом:
- useLayout($flag) - вкл/выкл Layout
- useJson($flag) - вкл/выкл вывод в формате JSON (все данные из View будут закинуты в JSON)
Application helpers:
- reload() - релоад текущей страницы - применяется для предотвращения сообщения о повторной отправки данных посредством POST, а так же для AJAX запросов
- redirect($url) - редирект на заданный URL - работает как для обычных, так и для AJAX запросов
- redirectTo($module, $controller, $params) - редирект на заданный контроллер
Acl
Application
Auth
Cache
Common
— Exception
— Collection
— Container
— Helper
— Options
— Singleton
Config
Controller
— Data
— Mapper
—— Crud
—— Rest
— Reflection
Crud
— Crud Table
Db
— Row
— Table
— Relations
— Query
Debug
EventManager
Grid
Http
Layout
Logger
Mailer
Messages
Nil
Proxy
Registry
Request
Response
Router
Session
Translator
Validator
View