Fork me on GitHub

Загрузчик (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();
...