ECOは、PHP 5.5+のPHPフレームワークです
インストール例:
# 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
];リクエスト/は、File 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
ルートコールバックは、呼び出し可能な名前または呼び出し可能です(最初の配列要素はコントローラー/アクションでなければなりません):
function auth () { /* do something */ }
eco:: route ( ' account/secure ' ,
[ ' AccountController->secure ' , ' auth ' , function () { /* invoked */ }]);警告:ルートコールバックは動的ルート設定では動作しません
ダイナミックルートセッターは、多くのルート(怠zyロードルート)を備えたより大きなアプリケーションに使用できます。
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
上記のルートは、Webブラウザでも機能します。 CLIのみのルートを作成するには(Webブラウザでは機能しません)、ルートの先頭に
$を追加します。たとえば
// 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 ) { });ルートコールバックは、ルートパラメーターコールバックでも使用できます。
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
});カスタムログハンドラーがコール
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構成の設定は個別に処理されます。
Eco Configuration Settingsファイルは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) - クラスAutoLoadereco::breadcrumb() - アクセスブレッドクランブクラス( breadcrumb()ヘルパー機能が利用可能)eco::clear($key) - クリアグローバル変数eco::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()ヘルパー機能が利用可能)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() helper functionを使用したアクセスEcoSystemRegistryService eco::service()またはservice()ヘルパー関数を使用したアクセスEcoSystemSession eco::session()またはsession()ヘルパー関数を使用したアクセスEcoSocketClientおよびEcoSocketServerソケットヘルパーの作成EcoSystemValidate eco::validate()またはvalidate() helper関数を使用してAcccess ヘルパー関数を使用して、Eco Core Methodまたはその他の有用な機能に迅速にアクセスできます。ここでヘルパー機能のドキュメントを見つけます。
Ecoは、コアEcoSystemクラスを拡張することで拡張できます。最初にこれはapp/com/bootstrap.phpファイルでセットアップされます。
// set Eco access class
class eco extends Eco System {}拡張クラスを使用して、メソッドを追加したり、 EcoSystem Overridable Methodをオーバーライドできます。
^トップに戻ります