Diese Bibliothek enthält einen Mikrokernel zum Bootstrapping fast jeder PHP-Anwendung, einschließlich Silex, Symlex (ein Framework-Stack für agile Webentwicklung auf Basis von Symfony) und Symfony Console. Der Kernel selbst besteht nur aus wenigen Zeilen, um eine Reihe von Umgebungsparametern festzulegen und damit eine Service-Container-Instanz zu erstellen.
Es reicht aus, eine Kernel-Instanz zu erstellen und run()
aufzurufen, um eine Anwendung zu starten:
#!/usr/bin/env php
<?php
// Composer
require_once ' vendor/autoload.php ' ;
$ app = new DIMicroKernel Kernel ( ' console ' );
// Run the 'app' service defined in config/console.yml
$ app -> run ();
YAML-Dateien in config/
konfigurieren die Anwendung und alle ihre Abhängigkeiten als Dienst. Der Dateiname entspricht dem Umgebungsnamen der Anwendung (z. B. config/console.yml
). Die Konfiguration kann zusätzlich für Unterumgebungen wie lokale oder Produktionsumgebungen geändert werden, indem eine passende Konfigurationsdatei wie config/console.local.yml
bereitgestellt wird (siehe Parameter app.sub_environment
). Diese Dateien haben das gleiche gut dokumentierte Format, das Sie vielleicht von Symfony kennen:
parameters :
app.name : ' My App '
app.version : ' 1.0 '
services :
doctrine.migrations.migrate :
class : DoctrineDBALMigrationsToolsConsoleCommandMigrateCommand
app :
class : SymfonyComponentConsoleApplication
public : true
arguments : [%app.name%, %app.version%]
calls :
- [ add, [ "@doctrine.migrations.migrate" ] ]
Dies bietet einen einheitlichen Ansatz für das Bootstrapping von Webanwendungen wie SilexApplication
, SymlexApplicationWeb
oder Befehlszeilenanwendungen wie SymfonyComponentConsoleApplication
mit demselben Kernel. Das Ergebnis ist viel sauberer und schlanker als der übliche Bootstrap- und Konfigurationswahnsinn, den man von vielen Frameworks kennt.
Der Kernel legt eine Reihe von Standardparametern fest, die zum Konfigurieren von Diensten verwendet werden können. Die Standardwerte können über Setter-Methoden des Kernels geändert oder durch Container-Konfigurationsdateien und Umgebungsvariablen (z. B. url: '%env(DATABASE_URL)%'
) überschrieben/erweitert werden.
Parameter | Getter-Methode | Setter-Methode | Standardwert |
---|---|---|---|
app.name | getName() | setName() | 'Kernel' |
app.version | getVersion() | setVersion() | '1,0' |
app.environment | getEnvironment() | setEnvironment() | 'App' |
app.sub_environment | getSubEnvironment() | setSubEnvironment() | 'lokal' |
app.debug | isDebug() | setDebug() | FALSCH |
app.charset | getCharset() | setCharset() | 'UTF-8' |
app.pfad | getAppPath() | setAppPath() | './' |
app.config_path | getConfigPath() | setConfigPath() | './config' |
app.base_path | getBasePath() | setBasePath() | '../' |
app.storage_path | getStoragePath() | setStoragePath() | '../Lagerung' |
app.log_path | getLogPath() | setLogPath() | '../storage/log' |
app.cache_path | getCachePath() | setCachePath() | '../storage/cache' |
app.src_path | getSrcPath() | setSrcPath() | '../src' |
Die Kernel-Basisklasse kann erweitert werden, um sie für einen bestimmten Zweck anzupassen, beispielsweise für Konsolenanwendungen mit langer Laufzeit:
<?php
use DIMicroKernel Kernel ;
class ConsoleApp extends Kernel
{
public function __construct ( $ appPath , $ debug = false )
{
parent :: __construct ( ' console ' , $ appPath , $ debug );
}
public function setUp ()
{
set_time_limit ( 0 );
ini_set ( ' memory_limit ' , ' -1 ' );
}
}
Wenn der Debug-Modus deaktiviert ist, wird die Service-Container-Konfiguration vom Kernel in dem als Cache-Pfad festgelegten Verzeichnis zwischengespeichert. Nach der Aktualisierung der Konfiguration müssen Sie alle Cache-Dateien löschen. Um das Caching vollständig zu deaktivieren, fügen Sie container.cache: false
zu Ihren Konfigurationsparametern hinzu:
parameters :
container.cache : false
Um diese Bibliothek in Ihrem Projekt zu verwenden, führen Sie einfach composer require symlex/di-microkernel
“ aus oder fügen Sie „symlex/di-microkernel“ zu Ihrer Datei „composer.json“ hinzu und führen Sie composer update
aus:
{
"require" : {
"php" : " >=7.1 " ,
"symlex/di-microkernel" : " ^2.0 "
}
}
DIMicroKernel wird von Michael Mayer gepflegt. Schicken Sie gerne eine E-Mail an [email protected], wenn Sie Fragen haben, kommerzielle Unterstützung benötigen oder einfach nur Hallo sagen möchten. Wir freuen uns über Beiträge jeglicher Art. Wenn Sie einen Fehler oder eine Idee haben, lesen Sie unseren Leitfaden, bevor Sie ein Problem eröffnen.