ページ コントローラー デザイン パターンは、Web ベースのシステムで使用される一般的なアーキテクチャ アプローチです。特定のコントローラーを個別のページまたはリクエストのロジックの処理専用にすることで、制御フローを整理します。このアプローチは責任を分離するのに役立ち、コードベースの維持と進化が容易になります。
ページ コントローラー パターンでは、各ページ (または同様の動作を持つページのグループ) には、以下を担当する独自のコントローラーがあります。
一般的な実装には次のコンポーネントが含まれます:
フロー
ファイル構造
/htdocs /src /Controllers HomeController.php AboutController.php /Services ViewRenderer.php /Views home.html.php about.html.php /public index.php /routes.php composer.json
オートローダー
{ "autoload": { "psr-4": { "App\": "htdocs/" } } }
composer dump-autoload
テンプレート
ホームページおよびabout.html.phpのテンプレート。
<!DOCTYPE html> <html> <head> <title><?= htmlspecialchars($title) ?></title> </head> <body> <h1><?= htmlspecialchars($title) ?></h1> <p><?= htmlspecialchars($content) ?></p> </body> </html>
ビューレンダラー
namespace App\Services; class ViewRenderer { public function render(string $view, array $data = []): void { extract($data); // Turns array keys into variables include __DIR__ . "/../../Views/{$view}.html.php"; } }
ホームコントローラー
ホームページのロジックを処理します。
namespace App\Controllers; use App\Services\ViewRenderer; class HomeController { public function __construct(private ViewRenderer $viewRenderer) { } public function handleRequest(): void { $data = [ 'title' => 'Welcome to the Site', 'content' => 'Homepage content.', ]; $this->viewRenderer->render('home', $data); } }
コントローラーについて
「会社概要」ページのロジックを処理します。
namespace App\Controllers; use App\Services\ViewRenderer; class AboutController { public function __construct(private ViewRenderer $viewRenderer) { } public function handleRequest(): void { $data = [ 'title' => 'About Us', 'content' => 'Information about the company.', ]; $this->viewRenderer->render('about', $data); } }
routes.php
コントローラへのルート マッピングを定義します。
use App\Controllers\HomeController; use App\Controllers\AboutController; // Define the routes in an associative array return [ '/' => HomeController::class, '/about' => AboutController::class, ];
index.php
アプリケーションのエントリ ポイント。
/htdocs /src /Controllers HomeController.php AboutController.php /Services ViewRenderer.php /Views home.html.php about.html.php /public index.php /routes.php composer.json
メリット
デメリット
大幅なロジックの再利用や複数のエントリ ポイントがある、より複雑なプロジェクトの場合は、フロント コントローラー または完全な MVC アーキテクチャ のようなパターンがより適している可能性があります。
以上がPHP デザイン パターン: ページ コントローラーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。