Загрузчик (Bootstrap.php)
Класс Загрузчика app/Console/Bootstrap.php
выполняет следующие методы:
- Создание приложения
__construct()
// Create app
$this->app = new Silex\Application();
- Конфигурация приложения
_iniConfig
- Инициализация провайдеров
_iniProviders
- Инициализация сервисов
_iniServices
и_extendServices
- Инициализация команд
_iniCommands
- Инициализация приложения
_iniApplication
Конфигурация приложения
Конфигурация задается с помощью app/Resources/Config/parameters.yml
файла.
Здесь устанавливаются значения основных параметров вашей конфигурации,
которые могут использоваться в других ваших конфигурациях.
Значения параметров можно получить через $app['config']['parameters']
.
Значения основных параметров:
- Временная зона (timezone)
- Язык локализации (locale)
- Цветовая схема сайта (scheme)
- Признак отладки (debug)
- Окружающая среда (environment)
- Директория хранения данных для консольного приложения (data_dir)
- Адрес хоста для локального тестирования (url_test)
- Параметры базы данных (db.driver, db.path, db.name, db.models.path, db.models.namespace, db.connection.production, db.connection.development, db.connection.test)
- Email параметры (mail.host, mail.port, mail.username, mail.password)
Инициализация провайдеров
Провайдеры устанавливаются так как показано ниже.
...
// Register the service providers
foreach ($app['config']['service_providers'] as $serviceProviderConfig) {
$app->register(
new $serviceProviderConfig['class'](
(!isset($serviceProviderConfig['construct_parameters'])) ?
null : $serviceProviderConfig['construct_parameters']
), (isset($serviceProviderConfig['parameters']) &&
null !== $serviceProviderConfig['parameters']) ?
$serviceProviderConfig['parameters'] : array()
);
}
...
Инициализация сервисов
С помощью класса MyService app/Services/MyService.php
устанавливаются сервисы app/Services/My
.
Сюда входят следующие сервисы:
- Работа с массивами (
ArrayBox.php
) - Работа с XML (
CrXml.php
) - Работа с HTTP (
Http.php
) - Работа с параметрами (
ParamBox.php
) - Работа со строками (
String.php
) - Общие функции (
System.php
)
С помощью класса Zf2Service app/Services/Zf2Service.php
устанавливаются сервисы из
Zend Framework 2 vendor/zendframework
.
Сюда входят следующие сервисы:
С помощью метода _extendServices
класса Bootstrap загрузчика app/Console/Bootstrap.php
расширяется функционал некоторых сервисов таких как: $app['translator']
.
Инициализация команд
Команды устанавливаются так как показано ниже.
...
foreach ($app['config']['commands'] as $name => $commandConfig) {
$classCommand = $commandConfig['class'];
if (isset($commandConfig['configure'])) {
$commandName = $commandConfig['configure']['name'];
$commandInstance = new $classCommand($commandName);
if (property_exists($commandInstance, 'app')) {
$commandInstance->app = $app;
}
if (property_exists($commandInstance, 'config_name')) {
$commandInstance->config_name = $name;
}
$commandInstance->setCommandConfig();
} else {
$commandInstance = new $classCommand();
if (property_exists($commandInstance, 'app')) {
$commandInstance->app = $app;
}
}
$app['console']->add($commandInstance);
}
...
Инициализация приложения
Здесь создаются директории, необходимые для функционирования консоли. Это делается при первом запуске консоли.
...
// Create application paths
$app['my']->get('config')->createAppPaths();
...