Ground Sunlight

Windowsで作る - PHPプログラミングの開発環境

ユーザ用ツール

サイト用ツール


apricot:core:completion

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

次のリビジョン
前のリビジョン
apricot:core:completion [2020/05/05 10:28]
y2sunlight 作成
apricot:core:completion [2020/05/21 10:42] (現在)
y2sunlight [Apricot コアの完成]
行 9: 行 9:
   * Apricot コア   * Apricot コア
     * [[apricot:core:top|Apricot コア作成の準備]]     * [[apricot:core:top|Apricot コア作成の準備]]
-    * [[apricot:core:application|Apricot アプリケーションクラス]]+    * [[apricot:core:application-class|Apricot アプリケーションクラス]]
     * [[apricot:core:basic-class|Apricot 各種基本コアクラス]]     * [[apricot:core:basic-class|Apricot 各種基本コアクラス]]
     * [[apricot:core:request-class|Apricot リクエストクラス]]     * [[apricot:core:request-class|Apricot リクエストクラス]]
     * [[apricot:core:response-class|Apricot レスポンスクラス]]     * [[apricot:core:response-class|Apricot レスポンスクラス]]
 +    * [[apricot:core:base-controller|Apricot ベースコントローラ]]
     * Apricot コアの完成     * Apricot コアの完成
   * [[apricot:app:top|Apricot アプリ]]   * [[apricot:app:top|Apricot アプリ]]
-  * [[apricot:app:ext|Apricot 拡張]]+  * [[apricot:ext:middleware|Apricot 拡張]]
  
 ここまでで一通りコアのクラス群を作成し終わったので最後に index.php と Applicationクラス を修正してコアの完成形を作ります。尚、コアにはこの他に、ミドルウェアとアクションインターセプターの機能もありますが、それは「コアの拡張」で行います。 ここまでで一通りコアのクラス群を作成し終わったので最後に index.php と Applicationクラス を修正してコアの完成形を作ります。尚、コアにはこの他に、ミドルウェアとアクションインターセプターの機能もありますが、それは「コアの拡張」で行います。
行 54: 行 55:
 $application->run(require_once config_dir('routes.php')); $application->run(require_once config_dir('routes.php'));
 </code> </code>
 +
 +\\
  
 ===== Applicationクラス ===== ===== Applicationクラス =====
 +
 +ApplicationクラスのexecuteAction()メソッド内にレスポンスの処理を加えます。これで一応 Applicationクラス は完成です。
  
 {{fa>folder-open-o}} ** /apricot/core ** {{fa>folder-open-o}} ** /apricot/core **
 <code php Application.php> <code php Application.php>
 +<?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');
 +        }
 +    }
 +}
 </code> </code>
 +
 +\\
 +
 +==== app.php ====
 +
 +アプリケーションの設定ファイル(app.php)を以下のように変更し、whoops、idiorm、BladeOneが使えるようにします。
 +
 +{{fa>folder-open-o}} ** /apricot/config**
 +<code php app.php>
 +<?php
 +return
 +[
 +    'setup' =>[
 +        config_dir('setup/whoops.setup.php'),    /* Error handler(whoops) */
 +        config_dir('setup/bladeone.setup.php'),  /* View template (BladeOne) */
 +    ],
 +    'middleware' =>[],
 +    'auth' =>[],
 +    'csrf' =>[],
 +];
 +</code>
 +
 +\\
 +
 +
 +===== テスト実行 =====
 +
 +ここまでの実装で一度実行してみましょう。ブラウザ上で以下のURLにアクセスしてみて下さい。
 +
 +<code>
 +http://localhost/ws2019/apricot/public/
 +</code>
 +
 +次のように表示されます:
 +
 +<code>
 +Hello, Apricot!
 +</code>
 +
 +また以下のように、ルーティング(routes.php)に存在しないURLを指定するとWoopsのエラー画面が表示されるはずです。
 +
 +<code>
 +http://localhost/ws2019/apricot/public/home
 +</code>
 +
 +
 +\\
 +
  
apricot/core/completion.1588642131.txt.gz · 最終更新: 2020/05/05 10:28 by y2sunlight