Эта библиотека содержит микроядро для загрузки практически любого 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], если у вас есть какие-либо вопросы, вам нужна коммерческая поддержка или вы просто хотите поздороваться. Мы приветствуем вклад любого рода. Если у вас есть ошибка или идея, прочитайте наше руководство, прежде чем открывать проблему.