フロント コントローラーは、Web アプリケーション開発でリクエスト処理を一元化するために使用される設計パターンです。システムのさまざまな部分に複数のエントリ ポイントを持つ代わりに、すべてのリクエストは単一の中央コントローラーを介してルーティングされ、適切なコンポーネントまたはモジュールにリクエストを送信します。
仕組み
- 単一のエントリ ポイント: すべての HTTP リクエストは、Web サーバー設定 (Apache の .htaccess や Nginx のルーティング ルールなど) を使用して単一のファイル (通常はindex.php) にリダイレクトされます。
- ルーティング: フロント コントローラーは URL を分析し、コードのどの部分を実行するかを決定します。これは手動で、またはルーティング ライブラリ/フレームワークを使用して実装できます。
- 委任: ルートに基づいて、フロント コントローラーはリクエストを適切なコントローラー (クラスまたはメソッド) に委任し、コントローラーはデータを処理して応答を返します。
- レスポンス: コントローラーは、ブラウザーまたはクライアントに送り返されるレスポンス (通常は HTML または JSON) を生成します。
利点
- 一元化: すべての受信アプリケーション フローは 1 つのポイントを通じて処理されるため、リクエストの管理と追跡が容易になります。
- 柔軟性: 認証、権限制御、ロギング、エラー処理などのグローバル機能を簡単に統合します。
- 再利用性: 共通ロジックをフロント コントローラーに集中させて重複を減らすことができます。
- 保守性: 一元化により、新しいルートやコントローラーの追加などの更新が簡素化されます。
例
ディレクトリ構造
/app /Controllers HomeController.php ProductController.php /Core Entrypoint.php /config routes.php /public index.php /vendor composer.json
オートロード
PSR-4 を実装するには、プロジェクト ルートにcomposer.json ファイルを作成します。
{ "autoload": { "psr-4": { "App\": "app/" } } }
次のコマンドを実行してオートローダーを生成します:
composer dump-autoload
リダイレクトリクエスト
apache(.htaccess)
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ index.php [L]
nginx
server { listen 80; server_name example.com; root /path/to/your/project/public; index index.php; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; # Adjust for your PHP version fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~* \.(css|js|jpg|jpeg|png|gif|ico|woff|woff2|ttf|svg|eot|ttc|otf|webp|avif)$ { expires max; log_not_found off; } location ~ /\.ht { deny all; } }
構成ファイルを保存した後、Nginx を再起動して変更を適用します
sudo systemctl reload nginx
コントローラー
ホームコントローラー
namespace App\Controllers; class HomeController { public function index(): void { echo "Welcome to the home page!"; } }
プロダクトコントローラー
namespace App\Controllers; class ProductController { public function list(): void { echo "Product list."; } }
コア
エントリーポイント
namespace App\Core; class Entrypoint { public function __construct(private array $routes) { } public function handleRequest(): void { $uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); if (isset($this->routes[$uri])) { $route = $this->routes[$uri]; $controller = new $route['controller']; $method = $route['method']; if (method_exists($controller, $method)) { $controller->$method(); } else { $this->sendResponse(500, "Method not found."); } } else { $this->sendResponse(404, "Page not found."); } } private function sendResponse(int $statusCode, string $message): void { http_response_code($statusCode); echo $message; } }
構成
ルート
$routes = [ '/' => [ 'controller' => 'HomeController', 'method' => 'index' ], '/products' => [ 'controller' => 'ProductController', 'method' => 'list' ] ];
インデックス(フロントコントローラー)
require_once __DIR__ . '/../vendor/autoload.php'; use App\Core\Entrypoint; $routes = require __DIR__ . '/../config/routes.php'; $entrypoint = new Entrypoint($routes); $entrypoint->handleRequest();
結果
この実装:
- フロント コントローラー パターンを使用してリクエスト処理を一元化します。
- Entrypoint クラス内のルーティング ロジックをカプセル化します。
- 自動ロードとコード構成の改善のために PSR-4 を採用します。
- シームレスなセットアップのために Nginx 構成を使用します。
以上がPHP デザイン パターン: フロント コントローラーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

これは、LaravelバックエンドとのReactアプリケーションの構築に関するシリーズの2番目と最終部分です。シリーズの最初の部分では、基本的な製品上場アプリケーションのためにLaravelを使用してRESTFUL APIを作成しました。このチュートリアルでは、開発者になります

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

この記事では、Laravel Webフレームワークの通知システムを検討します。 Laravelの通知システムを使用すると、さまざまなチャネルでユーザーに通知を送信できます。今日は、通知ovを送信する方法について説明します

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

PHPロギングは、Webアプリケーションの監視とデバッグ、および重要なイベント、エラー、ランタイムの動作をキャプチャするために不可欠です。システムのパフォーマンスに関する貴重な洞察を提供し、問題の特定に役立ち、より速いトラブルシューティングをサポートします


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

ホットトピック









