— y2sunlight 2020-05-05
関連記事
ここまでで一通りコアのクラス群を作成し終わったので最後に index.php と Applicationクラス を修正してコアの完成形を作ります。尚、コアにはこの他に、ミドルウェアとアクションインターセプターの機能もありますが、それは「コアの拡張」で行います。
セッション開始のコードを加えてindex.phpを完成させます。
/apricot/public
<?php //------------------------------------------------------------------- // オートローダーの登録 //------------------------------------------------------------------- require dirname(__DIR__).'/vendor/autoload.php'; //------------------------------------------------------------------- // パスの設定 //------------------------------------------------------------------- $project_path = dirname(__DIR__); $public_path = __DIR__; //------------------------------------------------------------------- // アプリケーション初期化 //------------------------------------------------------------------- $application = new Core\Application($project_path, $public_path); // セッション開始 Core\Session::start(); // アプリケーションセットアップ $application->setup(require_once config_dir('app.php')); //------------------------------------------------------------------- // アクションの実行 //------------------------------------------------------------------- $application->run(require_once config_dir('routes.php'));
ApplicationクラスのexecuteAction()メソッド内にレスポンスの処理を加えます。これで一応 Applicationクラス は完成です。
/apricot/core
<?php namespace Core; /** * Application Class */ class Application { ... /** * Ecexute action * @param string $controllerName * @param string $actionName * @param array $params */ private function executeAction(string $controllerName, string $actionName, array $params=[]) { // Create Controller $controller = "\\App\\Controllers\\{$controllerName}"; $instance = new $controller(); // Invoke action $response = call_user_func_array(array($instance, 'invokeAction'), [$actionName, $params]); if ($response instanceof \Core\Foundation\Response) { $response->commit(); } else { abort(500,'No Response'); } } }
アプリケーションの設定ファイル(app.php)を以下のように変更し、whoops、idiorm、BladeOneが使えるようにします。
/apricot/config
<?php return [ 'setup' =>[ config_dir('setup/whoops.setup.php'), /* Error handler(whoops) */ config_dir('setup/bladeone.setup.php'), /* View template (BladeOne) */ ], 'middleware' =>[], 'auth' =>[], 'csrf' =>[], ];
ここまでの実装で一度実行してみましょう。ブラウザ上で以下のURLにアクセスしてみて下さい。
http://localhost/ws2019/apricot/public/
次のように表示されます:
Hello, Apricot!
また以下のように、ルーティング(routes.php)に存在しないURLを指定するとWoopsのエラー画面が表示されるはずです。
http://localhost/ws2019/apricot/public/home