Das Entwurfsmuster Page Controller ist ein gängiger Architekturansatz, der in webbasierten Systemen verwendet wird. Es organisiert den Kontrollfluss, indem es einem bestimmten Controller die Logik für eine einzelne Seite oder Anfrage zuweist. Dieser Ansatz trägt dazu bei, Verantwortlichkeiten zu isolieren und die Codebasis einfacher zu warten und weiterzuentwickeln.
Im Seiten-Controller-Muster verfügt jede Seite (oder eine Gruppe von Seiten mit ähnlichem Verhalten) über einen eigenen Controller, der für Folgendes verantwortlich ist:
Eine typische Implementierung umfasst die folgenden Komponenten:
Fluss
Dateistruktur
/htdocs /src /Controllers HomeController.php AboutController.php /Services ViewRenderer.php /Views home.html.php about.html.php /public index.php /routes.php composer.json
Autoloader
{ "autoload": { "psr-4": { "App\": "htdocs/" } } }
composer dump-autoload
Vorlage
Vorlage für die Homepage und about.html.php.
<!DOCTYPE html> <html> <head> <title><?= htmlspecialchars($title) ?></title> </head> <body> <h1><?= htmlspecialchars($title) ?></h1> <p><?= htmlspecialchars($content) ?></p> </body> </html>
ViewRenderer
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"; } }
HomeController
Verwaltet die Homepage-Logik.
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); } }
AboutController
Verwaltet die Seitenlogik „Über uns“.
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
Definiert Routenzuordnungen zu Controllern.
use App\Controllers\HomeController; use App\Controllers\AboutController; // Define the routes in an associative array return [ '/' => HomeController::class, '/about' => AboutController::class, ];
index.php
Der Einstiegspunkt der Anwendung.
/htdocs /src /Controllers HomeController.php AboutController.php /Services ViewRenderer.php /Views home.html.php about.html.php /public index.php /routes.php composer.json
Vorteile
Nachteile
Für komplexere Projekte, bei denen es eine erhebliche Wiederverwendung der Logik oder mehrere Einstiegspunkte gibt, sind Muster wie Front Controller oder eine vollständige MVC-Architektur möglicherweise besser geeignet.
Das obige ist der detaillierte Inhalt vonPHP-Entwurfsmuster: Seitencontroller. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!