Cette bibliothèque contient un micro-noyau pour amorcer presque toutes les applications PHP, notamment Silex, Symlex (une pile de framework pour le développement Web agile basé sur Symfony) et Symfony Console. Le noyau lui-même ne contient que quelques lignes pour définir un ensemble de paramètres d'environnement et créer une instance de conteneur de services avec cela.
Créer une instance du noyau et appeler run()
suffit pour démarrer une application :
#!/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 ();
Les fichiers YAML situés dans config/
configurent l'application et toutes ses dépendances en tant que service. Le nom de fichier correspond au nom de l'environnement de l'application (par exemple config/console.yml
). La configuration peut en outre être modifiée pour les sous-environnements tels que local ou de production en fournissant un fichier de configuration correspondant tel que config/console.local.yml
(voir le paramètre app.sub_environment
). Ces fichiers sont dans le même format bien documenté que vous connaissez peut-être sur Symfony :
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" ] ]
Cela fournit une approche uniforme pour amorcer des applications Web telles que SilexApplication
, SymlexApplicationWeb
ou des applications en ligne de commande telles que SymfonyComponentConsoleApplication
utilisant le même noyau. Le résultat est beaucoup plus propre et plus simple que la folie habituelle du bootstrap et de la configuration que vous connaissez dans de nombreux frameworks.
Le noyau définit un certain nombre de paramètres par défaut qui peuvent être utilisés pour configurer les services. Les valeurs par défaut peuvent être modifiées via les méthodes de définition du noyau ou écrasées/étendues par les fichiers de configuration du conteneur et les variables d'environnement (par exemple url: '%env(DATABASE_URL)%'
).
Paramètre | Méthode d'obtention | Méthode de pose | Valeur par défaut |
---|---|---|---|
application.nom | getName() | setName() | 'Noyau' |
application.version | obtenirVersion() | setVersion() | '1.0' |
application.environnement | getEnvironnement() | setEnvironnement() | 'application' |
app.sub_environment | getSubEnvironment() | setSubEnvironment() | 'locale' |
app.debug | estDebug() | setDebug() | FAUX |
app.charset | getCharset() | setCharset() | 'UTF-8' |
app.path | getAppPath() | setAppPath() | './' |
app.config_path | getConfigPath() | setConfigPath() | './config' |
app.base_path | getBasePath() | setBasePath() | '../' |
app.storage_path | getStoragePath() | setStoragePath() | '../stockage' |
app.log_path | getLogPath() | setLogPath() | '../stockage/journal' |
app.cache_path | getCachePath() | setCachePath() | '../stockage/cache' |
app.src_path | getSrcPath() | setSrcPath() | '../src' |
La classe de base du noyau peut être étendue pour la personnaliser dans un but spécifique, comme les applications console de longue durée :
<?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 ' );
}
}
Si le mode débogage est désactivé, la configuration du conteneur de services est mise en cache par le noyau dans le répertoire défini comme chemin de cache. Vous devez supprimer tous les fichiers cache après la mise à jour de la configuration. Pour désactiver complètement la mise en cache, ajoutez container.cache: false
à vos paramètres de configuration :
parameters :
container.cache : false
Pour utiliser cette bibliothèque dans votre projet, exécutez simplement composer require symlex/di-microkernel
ou ajoutez "symlex/di-microkernel" à votre fichier composer.json et exécutez composer update
:
{
"require" : {
"php" : " >=7.1 " ,
"symlex/di-microkernel" : " ^2.0 "
}
}
DIMicroKernel est maintenu par Michael Mayer. N'hésitez pas à envoyer un e-mail à [email protected] si vous avez des questions, avez besoin d'une assistance commerciale ou si vous souhaitez simplement nous dire bonjour. Nous acceptons les contributions de toute nature. Si vous avez un bug ou une idée, lisez notre guide avant d'ouvrir un ticket.