ECO는 PHP 5.5+의 PHP 프레임 워크입니다
Install example:
# 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
]; 요청 / 파일 app/mod/IndexController.php 의 클래스 IndexController 의 메소드 home 호출합니다.
요청 /login 은 파일 app/mod/Account/UserController.php 에서 클래스 AccountUserController login
특정 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
Route Callbacks는 호출 가능한 이름 또는 호출 가능 일 수 있습니다 (첫 번째 배열 요소는 컨트롤러/작업이어야합니다) :
function auth () { /* do something */ }
eco:: route ( ' account/secure ' ,
[ ' AccountController->secure ' , ' auth ' , function () { /* invoked */ }]);경고 : Route Callbacks는 동적 경로 설정에서 작동하지 않습니다.
동적 경로 세터는 예를 들어 많은 경로 (게으른로드 경로)가있는 더 큰 응용 프로그램에 사용할 수 있습니다.
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 ' ); :id 값은 호출 가능 또는 클래스 방법으로 전달됩니다.
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 ' );또는 배열에서 매개 변수 콜백을 설정합니다 (첫 번째 배열 요소는 클래스 메소드 / 호출 가능이어야합니다) :
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 ) { });Route Callbacks는 Route 매개 변수 콜백과 함께 사용할 수도 있습니다.
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 파일 예 :
<?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
});Custom Log Handler Callable
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 */ });응용 프로그램 및 에코 구성 설정은 별도로 처리됩니다.
에코 구성 설정 파일은 app/com/conf/eco.conf.php 에 있으며 모든 프레임 워크 설정이 포함되어 있습니다. 에코 구성 설정에 대한 모든 문서는 파일에서 찾을 수 있습니다.
응용 프로그램 구성 설정은 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) - 클래스 자동 로더eco::breadcrumb() - Access Breadcrumb Class ( breadcrumb() 도우미 기능 이용)eco::clear($key) - Clear Global Variableeco::conf($file_path, $store) - 등록 /로드 애플리케이션 구성 설정 파일 ( conf() 헬퍼 기능 사용)eco::db($connection_id) - 액세스 데이터베이스 클래스 ( db() 도우미 기능 사용 가능)eco::error($message, $code, $category, $http_response_code) - 오류 트리거 ( error() 헬퍼 함수 사용 가능)eco::filter() - 액세스 데이터 필터 클래스 ( filter() 도우미 기능 사용)eco::flash() - 액세스 세션 플래시 클래스 ( flash() 도우미 기능 사용)eco::format() - 액세스 데이터 형식 클래스 ( format() 헬퍼 함수 사용 가능)eco::get($key) - 글로벌 변수를 얻으십시오eco::has($key) - 글로벌 변수가 있는지 확인하십시오eco::hook($name, $callback) - 후크를 추가하십시오eco::log() - 액세스 로그 클래스 ( logger() 헬퍼 함수 사용 가능)eco::model() - 모델 클래스 로더 ( model() 도우미 기능 사용)eco::param($id, $callback) -지도 경로 매개 변수 콜백 ( param() 헬퍼 함수 사용 가능)eco::request() - 액세스 요청 클래스 ( request() 헬퍼 함수 사용 가능)eco::response() - 액세스 응답 클래스 ( response() 도우미 기능 이용)eco::route($route, $action) -지도 경로eco::router() - 액세스 코어 라우터 클래스eco::run() - 응용 프로그램을 실행하십시오eco::service() - 서비스 클래스 로더 ( service() 도우미 기능 사용)eco::session() - 액세스 세션 클래스 ( session() 도우미 기능 이용)eco::set($key, $value) - 글로벌 변수를 설정합니다eco::stop() - 신청서를 우아하게 중지합니다 ( stop() 헬퍼 함수 사용 가능)eco::validate() - 액세스 데이터 액세스 Validate class ( validate() 도우미 기능 사용)eco::view($template, $view_params) - 템플릿보기 파일 및 액세스보기 클래스 ( view() 헬퍼 함수 사용 가능). 핵심 클래스를 사용하여 일반적인 응용 프로그램 작업을 단순화 할 수 있습니다.
EcoCache - 서버 측 캐시 코어 클래스EcoDatabase 데이터베이스 핵심 클래스EcoForm -html 양식 핵심 클래스EcoHttp -HTTP 요청 핵심 클래스EcoModel 데이터베이스 모델 핵심 클래스EcoTable -HTML 테이블 코어 클래스 이 헬퍼 클래스는 사용할 수 있습니다.
EcoBenchmark - 벤치마킹 도우미EcoSystemBreadcrumb eco::breadcrumb() 또는 breadcrumb() 도우미 기능을 사용한 액세스EcoSystemFilter - eco::filter() 또는 filter() 도우미 기능으로 액세스하십시오EcoSystemSessionFlash eco::flash() 또는 flash() 도우미 기능을 사용한 액세스EcoSystemFormat eco::format() 또는 format() 도우미 함수를 사용한 액세스EcoSystemRequest eco::request() 또는 request() 도우미 기능으로 액세스하십시오EcoSystemRegistryService eco::service() 또는 service() 도우미 기능을 사용한 액세스EcoSystemSession eco::session() 또는 session() 도우미 기능으로 액세스합니다EcoSocketClient 및 EcoSocketServer 소켓 도우미 생성EcoSystemValidate eco::validate() 또는 validate() 도우미 함수를 사용하여 Acccess 헬퍼 기능을 사용하여 Eco Core 방법 또는 기타 유용한 기능에 신속하게 액세스 할 수 있습니다. 여기에서 헬퍼 기능 문서를 찾으십시오.
핵심 EcoSystem 클래스를 확장하여 ECO를 확장 할 수 있습니다. 처음에는 app/com/bootstrap.php 파일에서 설정됩니다.
// set Eco access class
class eco extends Eco System {} 확장 클래스는 방법을 추가하거나 EcoSystem 재정의 방법을 무시하는 데 사용될 수 있습니다.
^ 위로 돌아갑니다