Eco - это PHP -структура для PHP 5,5+
Установите пример:
# wget shayanderson.com/eco.zip
# unzip ./eco.zip
Основные маршруты могут быть настроены в app/com/route.php , например:
// set routes
return [
// class method
' / ' => ' IndexController->home ' ,
// namespace
' login ' => ' AccountUserController->login ' ,
// callable
' logout ' => function () { /* do something */ },
// more routes
]; Запрос / вызовет метод home в классе IndexController в файле app/mod/IndexController.php .
Запрос /login вызовет login в систему метода в классе AccountUserController в файле app/mod/Account/UserController.php .
Конкретные методы HTTP могут использоваться для маршрутов:
eco:: route ( ' GET@api/user/:id ' , function ( $ id ) { /* GET method */ });
eco:: route ( ' DELETE@api/user/:id ' , function ( $ id ) { /* DELETE method */ });
eco:: route ( ' POST@api/user/:id? ' , function ( $ id = null ) { /* POST method */ });
// or handle multiple HTTP methods
eco:: route ( ' POST|PUT@api/user/:id? ' , function ( $ id = null ) { /* POST or PUT method */ });Эти методы HTTP поддерживаются:
DELETE,GET,HEAD,PATCH,POST,PUT
Обратные вызовы маршрута могут быть применением именем или применением (первым элементом массива должен быть контроллером/действием):
function auth () { /* do something */ }
eco:: route ( ' account/secure ' ,
[ ' AccountController->secure ' , ' auth ' , function () { /* invoked */ }]);Предупреждение: обратные вызовы маршрута не работают с настройкой динамического маршрута
Динамические сеттеры маршрутов могут использоваться для более крупных приложений, которые имеют много маршрутов (ленивые маршруты нагрузки), например:
eco:: route ( ' account* ' , ' AccountController::getRoutes() ' ); Теперь все запросы, которые начинаются с /account , будут загружать маршруты, используя метод:
class AccountController
{
public static function getRoutes ()
{
return [
' account/login ' => ' AccountController->login ' ,
// do not have to use class name if in same class:
' account/logout ' => ' logout '
];
}
}Динамическая настройка маршрута (ленивые маршруты нагрузки) также можно установить непосредственно в виде массива, пример:
eco:: route ( ' account* ' , [
' AccountController ' , // the class name must be first (index:0)
' account/login ' => ' login ' ,
' account/logout ' => ' logout '
]);Например, маршрутизация CLI проста в использовании:
eco: route ( ' bin/test/:id ' , function ( $ id ) {
echo ' CLI test, id: ' . $ id ;
});Теперь может быть издана команда CLI:
$ php index.php bin/test/5
Bin test: 5
Приведенный выше маршрут также будет работать в веб -браузере. Чтобы создать маршрут только CLI (не будет работать в веб -браузере) добавить
$в начало маршрута, например:
// this route will only work as CLI command
// the request '/bin/test/5' in a Web browser would result in a 404 error
eco: route ( ' $bin/test/:id ' , function ( $ id ) {
echo ' CLI test, id: ' . $ id ;
});Названные параметры маршрута:
eco:: route ( ' user/:id ' , ' UserController->view ' ); The :id будет передано методу Callable или Class:
class UserController
{
public function view ( $ id )
{
// do something
}
}Можно использовать дополнительные параметры:
eco:: route ( ' page/:id/:title? ' , function ( $ id , $ title = null ) {});Пример параметров подстановочного знака:
eco:: route ( ' product/:info+ ' , function ( $ info ) {
// if request is '/product/1/abc/x'
// $info is an array: ['1', 'abc', 'x']
});Образцы параметров маршрута могут использоваться несколькими различными способами:
eco:: route ( ' page/:title:strtoupper ' , ' PageController->view ' );Или установите обратные вызовы параметров в массиве (первый элемент массива должен быть методом класса / Callable):
eco:: route ( ' page/:title ' , [ ' PageController->view ' , [ ' title ' => ' strtoupper ' ]]);Кроме того, можно установить обратные вызовы глобального параметра маршрута, например:
// globally set route param callback
// now every ':id' param will use this callback
// global param callbacks are overwritten by local ones
eco:: param ( ' id ' , function ( $ id ) { return strtoupper ( $ id ); });
// or use multiple param names:
eco:: param ([ ' x ' , ' y ' , ' z ' ], function ( $ val ) { });Обратные вызовы маршрута также можно использовать с обратными вызовами параметров маршрута:
eco:: route ( ' page/:title ' , [
' PageController->view ' ,
' route_callback ' ,
function () { /* route callback */ },
// route param callback
[ ' title ' => ' strtoupper ' ]
]);Параметры маршрута могут быть использованы Регулярные выражения, если совпадение не удастся, маршрут не будет вызван:
eco:: route ( ' user/:id@[0-9]+ ' , ...);Порядок синтаксиса имеет значение при использовании различных типов параметров и/или комбинирования обратных вызовов и регулярных выражений, вот правильный синтаксис:
// when using callback with regular expression
// the callback must come first:
eco:: route ( ' user/:id:strtoupper@[0-9]+ ' , ...);
// use optional param and callback:
eco:: route ( ' user/:id/:name?:strtoupper ' , ...);
// use optional param and regular expression:
eco:: route ( ' user/:id/:name?@[a-z]+ ' , ...);
// use optional param, callback and regular expression:
eco:: route ( ' user/:id/:name?:strtoupper@[a-z]+ ' , ...);
// use wildcard param and callback:
eco:: route ( ' user/:params+:strtoupper ' , ...);
// use wildcard param and regular expression:
eco:: route ( ' user/:params+@[a-z]+ ' , ...);
// use wildcard param, callback and regular expression:
eco:: route ( ' user/:params+:strtoupper@[a-z]+ ' , ...);Объект представления можно использовать в действиях маршрута:
class PageController
{
public function get ( $ id )
{
$ page = PageModel:: get ( $ id );
// set view param
eco:: view ()-> set ( ' title ' , $ page -> title );
// or use view() helper function
// view()->set('title', $page->title);
// or like this:
view ()-> author = $ page -> author ;
// load template file 'page/view'
// and can also set view param 'content'
view ( ' page/view ' , [
' content ' => $ page -> content
]);
}
}Параметры маршрута также можно получить с помощью методов класса
Router.
app/tpl/page/view.tpl File Пример:
<?php include PATH_TEMPLATE_GLOBAL . ' header.tpl ' ; ?>
<h1> <?= $ title ?> </h1>
<p>Author: <?= $ author ?> </p>
<?= $ content ?>
<?php include PATH_TEMPLATE_GLOBAL . ' footer.tpl ' ; ?> Пример регистрации сообщений:
eco:: log ()-> error ( ' Bad error / fatal ' );
eco:: log ()-> warning ( ' Warning conditions ' );
eco:: log ()-> notice ( ' Notice message ' );
eco:: log ()-> debug ( ' File has loaded ' );Категории можно использовать при регистрации сообщения:
// category 'payment'
eco:: log ()-> error ( ' Failed to access payment gateway ' , ' payment ' );Информация о отладке также может быть добавлена:
eco:: log ()-> warning ( ' Request failed ' , /* category optional */ null ,
[ ' request ' => ' x ' , ' client ' => ' y ' ]);Получите весь журнал:
$ log = eco:: log ()-> get ();Настройка пользовательского обработчика журнала:
eco:: log ()-> setHandler ( function ( $ message , $ level , $ category , $ info ){
// if sending message to database
// do no send if database connection error, example:
// if(substr($message, 0, 17) == 'SQLSTATE[HY000] [')
// {
// return false;
// }
// handle custom logging
return true ; // handled
});Если обработчик пользовательского обработки журнала не возвращает
trueвнутренний регистратор будет продолжаться как нормально
Примеры ошибок триггера:
eco:: error ( ' Error message ' );
// or use helper function
error ( ' Something bad ' );
// custom error code
error ( ' Page not found ' , 404 );
// add log category
error ( ' Failed to load user ' , null , ' account ' );
// by default the HTTP error response code is sent
// to not send HTTP code use:
error ( ' Page not found ' , 404 , ' category ' false ); Последнее сообщение об ошибке (и категория ошибки), отправленная на функцию eco::error() можно получить доступ с помощью:
$ error_message = eco:: errorGetLast ();
$ error_category = eco:: errorGetLastCategory ();Обратный вызов 404 может быть использован для обработки 404 до вызванной ошибки
Крюки можно использовать для загрузки файлов или использования обратных вызовов во время выполнения, примеры:
// called before routing starts
eco:: hook (eco:: HOOK_BEFORE , function () { /* do something */ });
// called before the route callable or class method is called
// include a file example:
eco:: hook (eco:: HOOK_MIDDLE , PATH_LIB . ' hook/middle.php ' );
// called after dispatching
eco:: hook (eco:: HOOK_AFTER , function () { /* do something */ });Настройки приложения и экологической конфигурации обрабатываются отдельно.
Файл настроек настройки ECO находится по адресу app/com/conf/eco.conf.php и содержит все настройки фреймворка. Вся документация для настройки конфигурации ECO можно найти в файле.
Настройки конфигурации приложения могут быть сохранены с помощью ECO, пример:
// load config file(s) using path
eco:: conf ( PATH_CONF . ' app.conf.php ' );
eco:: conf ( PATH_CONF . ' api.conf.php ' );
// or load config settings using array
eco:: conf ([ ' local ' => [ ' path ' => ' x ' , ' filename ' => ' y ' ]]);
// use config settings
$ app_username = eco:: conf ()-> app -> username ;
$ local_path = eco:: conf ()-> local -> path ; Файлы конфигурации должны вернуть массив, app.conf.php Пример:
return [
' app ' => [
' username ' => ' x ' ,
' password ' => ' y '
],
' core ' => [ /* more */ ]
];Настройки конфигурации не могут быть перезаписаны при использовании нескольких файлов, поэтому основные клавиши массива должны быть уникальными даже в разных файлах. Никогда не используйте основной клавишу массива
_eco, который используется ECO для настройки внутренней структуры.
Настройки конфигурации также могут использоваться отдельно от ECO, например:
// do not store internally
$ conf = eco:: conf ( PATH_CONF . ' app.conf.php ' , false );
// use config settings
$ app_username = $ conf -> app -> username ;Eco предлагает следующие методы:
eco::autoload($paths) - класс AutoLo -Loaderereco::breadcrumb() - Доступ к классу хлебной крошки ( breadcrumb() вспомогательная функция доступна)eco::clear($key) - Очистить глобальную переменнуюeco::conf($file_path, $store) - регистрация / загрузка настройки настройки приложения File ( conf() вспомогательная функция доступна)eco::db($connection_id) - класс базы данных доступа ( db() .eco::error($message, $code, $category, $http_response_code) - запустите ошибку error() вспомогательная функция.eco::filter() - Класс фильтров данных доступа ( filter() Helper Function доступна)eco::flash() - Access Session Flash Class ( flash() вспомогательная функция доступна)eco::format() - доступ к классу Format Data Class ( format() .eco::get($key) - Получите глобальную переменнуюeco::has($key) - проверьте, существует ли глобальная переменнаяeco::hook($name, $callback) - добавьте крючокeco::log() - класс Log Access ( logger() вспомогательная функция доступна)eco::model() - Model Class Loader ( model() вспомогательная функция доступна)eco::param($id, $callback) - карта маршрута параметр Callback ( param() вспомогательная функция доступна)eco::request() - класс запроса доступа ( request() verper function доступна)eco::response() - доступ к классу ответа ( response() вспомогательная функция доступна)eco::route($route, $action) - маршрут картыeco::router() - Access Core Router Classeco::run() - запустите приложениеeco::service() - Service Class Loader ( service() Helper Function доступна)eco::session() - Класс сеанса доступа ( session() Доступна вспомогательная функция)eco::set($key, $value) - установить глобальную переменнуюeco::stop() - изящно остановите приложение ( stop() вспомогательная функция)eco::validate() - Доступ к данным Validate Class ( validate() Helper Function доступна)eco::view($template, $view_params) - Файл шаблона просмотра загрузки и класс View View ( view() Helper Function доступен) Основные классы могут использоваться для упрощения общих задач приложения:
EcoCache - серверный класс CACE Cache CashEcoDatabase - Core Core Class DatabaseEcoForm - HTML Form Core ClassEcoHttp - HTTP -запрос Core ClassEcoModel - Класс базы данных модели базы данныхEcoTable - HTML Table Core Class Эти вспомогательные классы доступны:
EcoBenchmark - Бест -помощникEcoSystemBreadcrumb - доступ с помощью eco::breadcrumb() или breadcrumb() вспомогательная функцияEcoSystemFilter - Доступ с eco::filter() или filter() вспомогательная функцияEcoSystemSessionFlash - доступ к eco::flash() или flash() вспомогательная функцияEcoSystemFormat - доступ с помощью eco::format() или format() вспомогательная функцияEcoSystemRequest - Access with eco::request() или request() вспомогательная функцияEcoSystemRegistryService - Access with eco::service() или service() вспомогательная функцияEcoSystemSession - Access with eco::session() или session() вспомогательная функцияEcoSocketClient и EcoSocketServer - Создание помощников сокетовEcoSystemValidate - Acccess с eco::validate() или validate() вспомогательная функция Помощные функции могут использоваться для быстрого доступа к методам Eco Core или другим полезным функциям. Найдите документацию по вспомогательным функциям здесь.
ECO может быть расширена путем расширения основного класса EcoSystem . Первоначально это настроено в файле app/com/bootstrap.php :
// set Eco access class
class eco extends Eco System {} Расширение класса может использоваться для добавления методов или переопределения методов переопределяемых EcoSystem .
^ Назад к вершине