メモ: /application/bootstrap/app.php が便利
Posted by admin at 2:38 日時 2014/11/25
対象:バージョン5.7以降
/application/bootstrap/app.php とは何のためのファイルか?冒頭のコメントを訳すのが一番手っ取り早い。
<?php /** * ---------------------------------------------------------------------------- * # カスタムアプリケーションハンドラ * * このファイルを使って多くのことが可能です。 * * ## ルートからテーマを設定: * * Route::setThemeByRoute('/login', 'greek_yogurt'); * * * ## クラスのオーバーライドを登録 * * Core::bind('helper/feed', function() { * return new \Application\Core\CustomFeedHelper(); * }); * * Core::bind('\Concrete\Attribute\Boolean\Controller', function($app, $params) { * return new \Application\Attribute\Boolean\Controller($params[0]); * }); * * ## イベントの登録 * * Events::addListener('on_page_view', function($event) { * $page = $event->getPageObject(); * }); * * * ## カスタムMVCルートの登録 * * Route::register('/test', function() { * print 'This is a contrived example.'; * }); * * Route::register('/custom/view', '\My\Custom\Controller::view'); * Route::register('/custom/add', '\My\Custom\Controller::add'); * * ## ルートパラメーターを渡す * * Route::register('/test/{foo}/{bar}', function($foo, $bar) { * print 'Here is foo: ' . $foo . ' and bar: ' . $bar; * }); * * * ## アセットのオーバーライド * * use \Concrete\Core\Asset\AssetList; * AssetList::getInstance() * ->getAsset('javascript', 'jquery') * ->setAssetURL('/path/to/new/jquery.js'); * * または、アセットを新しいバージョンでオーバーライドする * * use \Concrete\Core\Asset\AssetList; * use \Concrete\Core\Asset\Asset; * $al = AssetList::getInstance(); * $al->register( * 'javascript', 'jquery', 'path/to/new/jquery.js', * array('version' => '2.0', 'position' => Asset::ASSET_POSITION_HEADER, 'minify' => false, 'combine' => false) * ); * * ---------------------------------------------------------------------------- */
Route はURLルーティングを担当するクラスで、内部的にSymfonyのRoutingコンポーネントを使用している(同一ではない)。バージョン5.7以降では、ページへのアクセスはURLルーティングとして取り扱われていて、このファイルから、上記のサンプルのように、特定のページのテーマを変更したりすることができる。
また、このファイルからカスタムURLルートを追加することで、concrete5のページではないURLを追加することができる。これは、concrete5でAPIを提供する際に便利である。また、こんな感じでコードを書くと
Route::register('/debug', function() { print 'hoge'; });
/index.php/debug にアクセスすると hoge と表示されるようになる。これはちょっとしたデバッグに超便利。
この他、bootstrap/app.php からは Core クラスを使ったクラスのオーバーライド(依存性の注入)、AssetList クラスを使ったアセットの上書きなどが可能だが、追って記事にする予定。