Blog

メモ: /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 クラスを使ったアセットの上書きなどが可能だが、追って記事にする予定。


Share this entry