Esta biblioteca contiene un micronúcleo para arrancar casi cualquier aplicación PHP, incluidas Silex, Symlex (una pila de marco para el desarrollo web ágil basado en Symfony) y Symfony Console. El kernel en sí consta de solo unas pocas líneas para establecer un montón de parámetros ambientales y crear una instancia de contenedor de servicios con eso.
Crear una instancia del kernel y llamar run()
es suficiente para iniciar una aplicación:
#!/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 ();
Archivos YAML ubicados en config/
configurar la aplicación y todas sus dependencias como servicio. El nombre del archivo coincide con el nombre del entorno de la aplicación (por ejemplo, config/console.yml
). La configuración también se puede modificar para subentornos como local o producción proporcionando un archivo de configuración coincidente como config/console.local.yml
(consulte el parámetro app.sub_environment
). Estos archivos están en el mismo formato bien documentado que quizás conozcas de 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" ] ]
Esto proporciona un enfoque uniforme para arrancar aplicaciones web como SilexApplication
, SymlexApplicationWeb
o aplicaciones de línea de comandos como SymfonyComponentConsoleApplication
usando el mismo kernel. El resultado es mucho más limpio y ágil que la habitual locura de arranque y configuración que conoces de muchos frameworks.
El kernel establece una serie de parámetros predeterminados que se pueden utilizar para configurar servicios. Los valores predeterminados se pueden cambiar mediante métodos de configuración del kernel o sobrescribir/ampliar mediante archivos de configuración del contenedor y variables de entorno (por ejemplo, url: '%env(DATABASE_URL)%'
).
Parámetro | método captador | método de establecimiento | Valor predeterminado |
---|---|---|---|
nombre.aplicación | obtenerNombre() | establecerNombre() | 'Núcleo' |
versión.de.aplicación | obtenerVersión() | establecerVersión() | '1.0' |
entorno de aplicación | obtenerEntorno() | establecerEntorno() | 'aplicación' |
aplicación.sub_entorno | getSubEntorno() | setSubEntorno() | 'local' |
aplicación.debug | esDepurar() | establecerDepuración() | FALSO |
juego de caracteres de aplicación | obtenerconjunto de caracteres() | setCharset() | 'UTF-8' |
ruta.aplicación | obtenerPathApp() | establecerAppPath() | './' |
aplicación.config_path | getConfigPath() | establecerConfigPath() | './config' |
aplicación.base_path | obtenerPathBase() | establecerBasePath() | '../' |
aplicación.ruta_almacenamiento | obtenerRutaAlmacenamiento() | establecerRutaAlmacenamiento() | '../almacenamiento' |
aplicación.log_path | obtener ruta de registro() | establecerRutaLog() | '../almacenamiento/registro' |
aplicación.cache_path | obtenerCachePath() | establecerCachePath() | '../almacenamiento/caché' |
aplicación.src_path | obtenerSrcPath() | establecerSrcPath() | '../fuente' |
La clase base del kernel se puede ampliar para personalizarla para un propósito específico, como aplicaciones de consola de larga ejecución:
<?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 el modo de depuración está desactivado, el kernel almacena en caché la configuración del contenedor de servicios en el directorio establecido como ruta de caché. Debe eliminar todos los archivos de caché después de actualizar la configuración. Para deshabilitar el almacenamiento en caché por completo, agregue container.cache: false
a sus parámetros de configuración:
parameters :
container.cache : false
Para usar esta biblioteca en su proyecto, simplemente ejecute composer require symlex/di-microkernel
o agregue "symlex/di-microkernel" a su archivo compositor.json y ejecute composer update
:
{
"require" : {
"php" : " >=7.1 " ,
"symlex/di-microkernel" : " ^2.0 "
}
}
DIMicroKernel es mantenido por Michael Mayer. No dude en enviar un correo electrónico a [email protected] si tiene alguna pregunta, necesita soporte comercial o simplemente quiere saludar. Damos la bienvenida a contribuciones de cualquier tipo. Si tiene un error o una idea, lea nuestra guía antes de abrir un problema.