Heim >Backend-Entwicklung >PHP-Tutorial >Single-Datei-Symfony-Apps? Ja, mit Microkerneltrait!
Symfonys einzelne Dateianwendungen (SFAs) mit Microkerneltrait: Ein optimierter Ansatz
Symfony 2.8 und 3.0 Einführte Einzeldateianwendungen (SFAs), ein vereinfachte Ansatz zum Erstellen von Symfony -Anwendungen, insbesondere für Microservices oder kleinere Projekte. Dies wird durch die MicroKernelTrait
erreicht. Dieser Artikel untersucht SFAs, ihre Vorteile, Einschränkungen und wie sie mit einem vollständigen Symfony -Setup verglichen werden.
Während eine traditionelle Symfony -Anwendung zahlreiche Dateien umfasst, streben SFAs eine prägnantere Struktur an. Dieser Ansatz bedeutet jedoch nicht eine wirklich einzelne Datei; Es dreht sich vielmehr um eine einzelne Kerneldatei -Verwaltungs -Anwendungslogik.
Um eine SFA zu erstellen, benötigen Sie einen Webserver und einen Komponisten. Eine lokale Entwicklungsumgebung wie Laravel Valet oder Homestead verbessert vereinfacht das Setup.
Schritt 1: Minimale Symfony -Installation
Installieren Sie das Core Symfony -Paket mit Composer:
<code class="language-bash">composer require symfony/symfony</code>
Erstellen Sie app
und web
Verzeichnisse in Ihrem Projektstamm.
Schritt 2: Der Front -Controller (web/app_dev.php
)
Diese Datei empfängt Anfragen und leitet sie an den Anwendungskernel:
<code class="language-php"><?php use Symfony\Component\HttpFoundation\Request; require __DIR__.'/../vendor/autoload.php'; require __DIR__ . '/../app/SfaKernel.php'; $kernel = new SfaKernel('dev', true); $request = Request::createFromGlobals(); $response = $kernel->handle($request); $response->send(); $kernel->terminate($request, $response);</code>
Hinweis: Die Kernelklasse befindet sich in app/SfaKernel.php
. Die loadClassCache()
-Methode wird in diesem minimalen Setup ein einfacher Fall ausgelassen.
Schritt 3: Die Kernelklasse (app/SfaKernel.php
)
Diese Klasse erweitert Symfony's Kernel
und verwendet die MicroKernelTrait
:
<code class="language-php"><?php use Symfony\Component\HttpKernel\Kernel; use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait; use Symfony\Component\Config\Loader\LoaderInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\Routing\RouteCollectionBuilder; use Symfony\Component\HttpFoundation\Response; use Symfony\Bundle\FrameworkBundle\FrameworkBundle; class SfaKernel extends Kernel { use MicroKernelTrait; public function registerBundles() { return [ new FrameworkBundle(), ]; } protected function configureRoutes(RouteCollectionBuilder $routes) { $routes->add('/', 'kernel:home'); $routes->add('/greet/{who}', 'kernel:greet'); } protected function configureContainer(ContainerBuilder $c, LoaderInterface $loader) { $c->loadFromExtension('framework', [ 'secret' => 'micr0', // Replace with a unique secret ]); } public function home() { return new Response('<p>Home, sweet home</p>'); } public function greet($who) { return new Response("<h1>Greeting</h1> <p>Hello $who</p>"); } }</code>
Die configureRoutes()
-Methode definiert Anwendungsrouten und konfiguriert configureContainer()
den Abhängigkeitsinjektionsbehälter. Die Methoden home()
und greet()
wirken als einfache Controller.
Anwendungsfälle und Überlegungen
Während SFAs nicht für groß angelegte Anwendungen bestimmt sind, sind sie ideal für:
Einschränkungen zählen potenzielle organisatorische Herausforderungen mit dem Wachstum der Anwendung und eine mögliche mangelnde Flexibilität im Vergleich zu einem vollständigen Symfony -Setup.
Vergleich zum vollständigen Symfony -Setup
SFAs bieten Einfachheit und einfache Einrichtung, aber vollständige Symfony -Installationen bieten eine größere Flexibilität, Skalierbarkeit und eine bessere Organisation für größere Projekte.
Schlussfolgerung
Symfony's MicroKernelTrait
bietet ein wertvolles Werkzeug zum Erstellen leichter Symfony -Anwendungen. Obwohl es in allen Fällen kein Ersatz für volles Symfony ist, bietet es einen optimierten Ansatz für bestimmte Anwendungsfälle, sodass Entwickler die Leistung von Symfony mit reduzierter Komplexität nutzen können.
(Hinweis: Die Bild-URLs im ursprünglichen Eingang waren alle identisch. Ich habe sie so gehalten, wie sie sind, aber in einem realen Szenario wären sie wahrscheinlich anders.)
Das obige ist der detaillierte Inhalt vonSingle-Datei-Symfony-Apps? Ja, mit Microkerneltrait!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!