Ground Sunlight

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

ユーザ用ツール

サイト用ツール


サイドバー

メインメニュー

XAMPP アレンジ

道具箱

リポジトリ編

フレームワーク編

公開ソフトウェア

メタ
リンク


このページへのアクセス
今日: 1 / 昨日: 0
総計: 112

apricot:core:completion

Apricot コアの完成

y2sunlight 2020-05-05

Apricot に戻る

関連記事

ここまでで一通りコアのクラス群を作成し終わったので最後に index.php と Applicationクラス を修正してコアの完成形を作ります。尚、コアにはこの他に、ミドルウェアとアクションインターセプターの機能もありますが、それは「コアの拡張」で行います。


index.php

セッション開始のコードを加えてindex.phpを完成させます。

/apricot/public

index.php
<?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クラス

ApplicationクラスのexecuteAction()メソッド内にレスポンスの処理を加えます。これで一応 Applicationクラス は完成です。

/apricot/core

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');
        }
    }
}


app.php

アプリケーションの設定ファイル(app.php)を以下のように変更し、whoops、idiorm、BladeOneが使えるようにします。

/apricot/config

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' =>[],
];


テスト実行

ここまでの実装で一度実行してみましょう。ブラウザ上で以下のURLにアクセスしてみて下さい。

http://localhost/ws2019/apricot/public/

次のように表示されます:

Hello, Apricot!

また以下のように、ルーティング(routes.php)に存在しないURLを指定するとWoopsのエラー画面が表示されるはずです。

http://localhost/ws2019/apricot/public/home


コメント

コメントを入力. Wiki文法が有効です:
 
apricot/core/completion.txt · 最終更新: 2020/05/21 10:42 by y2sunlight