Esta biblioteca contém um micro-kernel para inicializar quase qualquer aplicativo PHP, incluindo Silex, Symlex (uma pilha de framework para desenvolvimento ágil da Web baseado em Symfony) e Symfony Console. O kernel em si contém apenas algumas linhas para definir vários parâmetros de ambiente e criar uma instância de contêiner de serviço com isso.
Criar uma instância do kernel e chamar run()
é suficiente para iniciar uma aplicação:
#!/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 ();
Arquivos YAML localizados em config/
configure o aplicativo e todas as suas dependências como um serviço. O nome do arquivo corresponde ao nome do ambiente do aplicativo (por exemplo, config/console.yml
). A configuração também pode ser modificada para subambientes, como local ou produção, fornecendo um arquivo de configuração correspondente como config/console.local.yml
(consulte o parâmetro app.sub_environment
). Esses arquivos estão no mesmo formato bem documentado que você deve conhecer no 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" ] ]
Isso fornece uma abordagem uniforme para inicializar aplicativos da Web como SilexApplication
, SymlexApplicationWeb
ou aplicativos de linha de comando como SymfonyComponentConsoleApplication
usando o mesmo kernel. O resultado é muito mais limpo e enxuto do que a loucura usual de inicialização e configuração que você conhece de muitos frameworks.
O kernel define vários parâmetros padrão que podem ser usados para configurar serviços. Os valores padrão podem ser alterados através de métodos setter do kernel ou substituídos/estendidos por arquivos de configuração do contêiner e variáveis de ambiente (por exemplo, url: '%env(DATABASE_URL)%'
).
Parâmetro | Método getter | Método setter | Valor padrão |
---|---|---|---|
nome do aplicativo | getNome() | setNome() | 'Núcleo' |
app.versão | getVersão() | setVersão() | '1,0' |
app.ambiente | getAmbiente() | setAmbiente() | 'aplicativo' |
app.sub_environment | getSubAmbiente() | setSubEnvironment() | 'local' |
aplicativo.debug | isDebug() | setDebug() | falso |
aplicativo.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() | '../armazenar' |
app.log_path | getLogPath() | setLogPath() | '../armazenamento/log' |
app.cache_path | getCachePath() | setCachePath() | '../armazenamento/cache' |
app.src_path | getSrcPath() | setSrcPath() | '../src' |
A classe base do kernel pode ser estendida para personalizá-la para uma finalidade específica, como aplicativos de console de longa execução:
<?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 ' );
}
}
Se o modo de depuração estiver desativado, a configuração do contêiner de serviço será armazenada em cache pelo kernel no diretório definido como caminho de cache. Você deve excluir todos os arquivos de cache após atualizar a configuração. Para desabilitar completamente o cache, adicione container.cache: false
aos seus parâmetros de configuração:
parameters :
container.cache : false
Para usar esta biblioteca em seu projeto, simplesmente execute composer require symlex/di-microkernel
ou adicione "symlex/di-microkernel" ao seu arquivo compositor.json e execute composer update
:
{
"require" : {
"php" : " >=7.1 " ,
"symlex/di-microkernel" : " ^2.0 "
}
}
DIMicroKernel é mantido por Michael Mayer. Sinta-se à vontade para enviar um e-mail para [email protected] se tiver alguma dúvida, precisar de suporte comercial ou apenas quiser dizer olá. Aceitamos contribuições de qualquer tipo. Se você tiver um bug ou uma ideia, leia nosso guia antes de abrir um problema.