Эта библиотека содержит микроядро для загрузки практически любого PHP-приложения, включая Silex, Symlex (стек фреймворка для гибкой веб-разработки на основе Symfony) и Symfony Console. Само ядро представляет собой всего лишь несколько строк для установки набора параметров среды и создания с их помощью экземпляра сервисного контейнера.
Для запуска приложения достаточно создать экземпляр ядра и вызвать run()
:
#!/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, расположенные в config/
настраивают приложение и все его зависимости как службу. Имя файла соответствует имени среды приложения (например, config/console.yml
). Конфигурацию можно дополнительно изменить для подсред, таких как локальная или производственная, предоставив соответствующий файл конфигурации, например config/console.local.yml
(см. параметр app.sub_environment
). Эти файлы имеют тот же хорошо документированный формат, который вы, возможно, знаете по 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" ] ]
Это обеспечивает единый подход для загрузки веб-приложений, таких как SilexApplication
, SymlexApplicationWeb
, или приложений командной строки, таких как SymfonyComponentConsoleApplication
с использованием одного и того же ядра. Результат намного чище и компактнее, чем обычное безумие начальной загрузки и настройки, которое вы знаете из многих фреймворков.
Ядро устанавливает ряд параметров по умолчанию, которые можно использовать для настройки служб. Значения по умолчанию можно изменить с помощью методов установки ядра или перезаписать/расширить с помощью файлов конфигурации контейнера и переменных среды (например, url: '%env(DATABASE_URL)%'
).
Параметр | Метод получения | Метод установки | Значение по умолчанию |
---|---|---|---|
имя_приложения | получитьИмя() | setName() | «Ядро» |
версия приложения | getVersion() | setVersion() | '1.0' |
приложение.среда | getEnvironment() | setEnvironment() | 'приложение' |
app.sub_environment | getSubEnvironment() | setSubEnvironment() | 'местный' |
приложение.debug | isDebug() | setDebug() | ЛОЖЬ |
app.charset | getCharset() | setCharset() | 'UTF-8' |
путь к приложению | получитьAppPath() | установитьAppPath() | './' |
app.config_path | getConfigPath() | установитьКонфигПат() | './конфигурация' |
app.base_path | getBasePath() | установитьБазовыйПат() | '../' |
app.storage_path | getStoragePath() | УстановитьСторажеПат() | '../хранилище' |
app.log_path | getLogPath() | setLogPath() | '../хранилище/журнал' |
app.cache_path | getCachePath() | установитьКэшПат() | '../хранилище/кэш' |
app.src_path | getSrcPath() | setSrcPath() | '../источник' |
Базовый класс ядра можно расширить, чтобы настроить его для определенных целей, например, для долго работающих консольных приложений:
<?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 ' );
}
}
Если режим отладки отключен, конфигурация сервисного контейнера кэшируется ядром в каталоге, указанном в качестве пути к кэшу. После обновления конфигурации необходимо удалить все файлы кэша. Чтобы полностью отключить кеширование, добавьте container.cache: false
в параметры конфигурации:
parameters :
container.cache : false
Чтобы использовать эту библиотеку в своем проекте, просто запустите composer require symlex/di-microkernel
, или добавьте «symlex/di-microkernel» в ваш файл композитора.json и запустите composer update
:
{
"require" : {
"php" : " >=7.1 " ,
"symlex/di-microkernel" : " ^2.0 "
}
}
DIMicroKernel поддерживается Майклом Майером. Не стесняйтесь отправлять электронное письмо на адрес [email protected], если у вас есть какие-либо вопросы, вам нужна коммерческая поддержка или вы просто хотите поздороваться. Мы приветствуем вклад любого рода. Если у вас есть ошибка или идея, прочитайте наше руководство, прежде чем открывать проблему.