A free and open-source book on ZF3 for beginners

Translation into this language is not yet finished. You can help this project by translating the chapters and contributing your changes.

3.8. Configuração da Aplicação

A maioria dos componentes do Zend Framework que são usados ​​em seu site, requer configuração (pequenos ajustes). Por exemplo, na configuração arquivo que você define credenciais de acesso a conexão com o banco de dados, ou quando especifica quais módulos estão presentes em seu aplicativo e, fornecem alguns parâmetros específicos para sua aplicação.

Você pode definir os parâmetros de configuração em dois níveis: no nível de aplicação, ou no nível do módulo. No nível do aplicativo, você normalmente definir parâmetros que controlam o aplicativo inteiro e são comuns a todos módulos de sua aplicação. No nível do módulo, você define parâmetros que afeta apenas este módulo.

Você pode definir os parâmetros de configuração em dois níveis: no nível da aplicação, ou no nível do módulo. No nível da aplicativo, você normalmente definir parâmetros que controlam o aplicativo inteiro e são comuns a todos módulos de sua aplicação. No nível do módulo, você define parâmetros que afeta apenas este módulo.

Alguns frameworks PHP preferem aplicar o conceito convenções sobre configuração, onde A maioria dos seus parâmetros é codificada e pre-configurados e não requer configuração. Isso torna mais rápido desenvolver o aplicativo, mas o torna menos personalizável. No Zend Framework 3, o conceito convenções sobre configuração é usado, porém você pode personalizar qualquer aspecto de sua aplicação, mas terá que gastar algum tempo para aprender como fazer isso.

3.8.1. Configuração dos Arquivos (no Nível de Aplicação)

O subdiretório APP_DIR/config contém arquivos de configuração de toda a sua aplicação. Vamos ver mais detalhes (Imagem 3.4).

Imagem 3.4. Arquivos de Configuração Imagem 3.4. Arquivos de Configuração

O APP_DIR/config/application.config.php é o arquivo de configuração principal. Ele é usado pela aplicação na na inicialização para determinar quais módulos do aplicativo devem ser carregados e quais serviços criar por padrão.

Abaixo, o conteúdo do arquivo application.config.php é mostrado. Você pode ver que o arquivo de configuração é apenas um array associativo em PHP e cada componente tem uma chave específica nessa matriz. Você pode fornecer comentários in-line para as chaves do array para tornar mais fácil para os outros entenderem o significado de cada chave.

Por convenção, os nomes das chaves dos arrays devem estar em minúsculas, e se o nome da chave consiste em palavras, as palavras devem ser separadas pelo símbolo de sublinhado ('_').

return [
    // Retrieve list of modules used in this application.
    'modules' => require __DIR__ . '/modules.config.php',

    // These are various options for the listeners attached to the ModuleManager
    'module_listener_options' => [
        // This should be an array of paths in which modules reside.
        // If a string key is provided, the listener will consider that a module
        // namespace, the value of that key the specific path to that module's
        // Module class.
        'module_paths' => [
            './module',
            './vendor',
        ],

        // An array of paths from which to glob configuration files after
        // modules are loaded. These effectively override configuration
        // provided by modules themselves. Paths may use GLOB_BRACE notation.
        'config_glob_paths' => [
            realpath(__DIR__) . '/autoload/{{,*.}global,{,*.}local}.php',
        ],

        // Whether or not to enable a configuration cache.
        // If enabled, the merged configuration will be cached and used in
        // subsequent requests.
        'config_cache_enabled' => true,

        // The key used to create the configuration cache file name.
        'config_cache_key' => 'application.config.cache',

        // Whether or not to enable a module class map cache.
        // If enabled, creates a module class map cache which will be used
        // by in future requests, to reduce the autoloading process.
        'module_map_cache_enabled' => true,

        // The key used to create the class map cache file name.
        'module_map_cache_key' => 'application.module.cache',

        // The path in which to cache merged configuration.
        'cache_dir' => 'data/cache/',

        // Whether or not to enable modules dependency checking.
        // Enabled by default, prevents usage of modules that depend on other modules
        // that weren't loaded.
        // 'check_dependencies' => true,
    ],

    // Used to create an own service manager. May contain one or more child arrays.
    //'service_listener_options' => [
    //     [
    //         'service_manager' => $stringServiceManagerName,
    //         'config_key'      => $stringConfigKey,
    //         'interface'       => $stringOptionalInterface,
    //         'method'          => $stringRequiredMethodName,
    //     ],
    // ],

   // Initial configuration with which to seed the ServiceManager.
   // Should be compatible with Zend\ServiceManager\Config.
   // 'service_manager' => [],
];

Na linha 3, temos os módulos sendo definindo quais módulos serão carregados na inicialização da aplicação. Você pode ver isso os nomes dos módulos são armazenados dentro de outro arquivo de configuração modules.config.php, que lista todos os módulos presente no seu site.

Na linha 11, temos o module_paths que informa ao ZF3 sobre diretórios onde procurar pelo os arquivos de origem pertencentes a módulos. Os módulos da sua aplicação que você desenvolver estão localizados no diretório APP_DIR/module e os que você adquirir atavés do Composer provavelmente vão estar localizados dentro do diretório APP_DIR/vendor.

E na linha 19 nós temos o config_glob_paths, que diz ao ZF3 onde procure por arquivos extras de configuração. Você vê esses arquivos de APP_DIR/config/autoload que têm o sufixo global.php ou local.php, são automaticamente carregados.

Resumindo, você normalmente usa o arquivo application.config.php para armazenar as informações sobre quais módulos devem ser carregados na sua aplicação e onde eles estão localizados e como eles são carregados (por exemplo, você pode controlar as opções de cache aqui). Nesse arquivo você também pode ajustar o service manager. Não é recomendado adicionar mais chaves neste arquivo. Para isso, é melhor usar o arquivo autoload/global.php.

E vamos também dar uma olhada dentro do arquivo modules.config.php. Atualmente, você tem os seguintes módulos instalado em seu site:

return [
    'Zend\Session',
    'Zend\Mvc\Plugin\Prg',
    'Zend\Mvc\Plugin\Identity',
    'Zend\Mvc\Plugin\FlashMessenger',
    'Zend\Mvc\Plugin\FilePrg',
    'Zend\Form',
    'Zend\Router',
    'Zend\Validator',
    'Application',
];

O módulo Application contém o módulo do arquivos do seu aplicativo. Todos os outros módulos são listados como componentes do Zend Framework.

No ZF3, existe um um plugin especial do Composer chamado component installer. Se você se lembra, no capítulo Zend Skeleton Application, nós respondemos várias perguntas sim/não do instalador, determinando quais componentes instalar. E o instalador injetou os nomes dos módulos desses componentes no modules.config.php

3.8.2. Arquivos de Configuração Extra (no Nível de Aplicação)

Arquivos de configuração "extra", APP_DIR/config/autoload/global.php e APP_DIR/config/autoload/local.php Os arquivos definem parâmetros dependentes de ambiente e dependentes do ambiente em todo o aplicativo, respectivamente. Esses arquivos de configuração são automaticamente carregados e mesclados recursivamente com os arquivos de configuração fornecidos pelo módulo, é por isso que seu diretório é chamado autoload.

Tendo diferentes arquivos de configuração no diretório APP_DIR/config/autoload, você pode estar confuso sobre quais parâmetros devem ser colocados em cada um. Aqui estão algumas dicas:

Porque o arquivo autoload/local.php contém parâmetros específicos do ambiente, no sistema de controle de versão você armazena seu "modelo de distribuição" local.php.dist. Cada desenvolvedor em sua equipe renomeia o arquivo local.php.dist para local.php e informa em seus próprios parâmetros. Este arquivo local.php não deve ser armazenado em Controle de versão (GIT), porque ele pode conter informações confidenciais, como credenciais de banco de dados (nome de usuário e senha), e você pode querer que outras pessoas não os vejam.

3.8.3. Configuração dos Arquivos de Desenvolvimento (no Nível de Aplicação)

O arquivo de configuração de desenvolvimento em nível da aplicativo (APP_DIR/config/development.config.php) apenas é usado quando você ativa o modo de desenvolvimento. Se você lembrar, ativamos o modo de desenvolvimento anteriormente no capítulo Zend Skeleton Application.

Você ativa o modo de desenvolvimento com o seguinte comando:

php composer.phar development-enable

O arquivo development.config.php é incorporado com o arquivo application.config.php. Isso permite que você substituir alguns parâmetros. Por exemplo, você pode:

Se você desabilitar o modo de desenvolvimento, o arquivo development.config.php será apagado. Então você não deve armazenar este arquivo sob o controle de versão. Em vez disso, armazene sua versão distribution, development.config.php.dist no seu controle de versão.

3.8.4. Configuração dos Arquivos de Desenvolvimento Extra (no Nível de Aplicação)

O arquivo de configuração de desenvolvimento extra no nível de aplicação (APP_DIR/config/autoload/development.local.php) apresenta apenas quando você ativa o modo de desenvolvimento.

O arquivo development.local.php é incorporado com outros arquivos de configuração. Isso permite que você Substituir alguns parâmetros específicos do módulo usados ​​apenas no ambiente de desenvolvimento.

Se você desabilitar o modo de desenvolvimento, o arquivo development.local.php será apagado. Então você não deveria armazene este arquivo sob o controle de versão. Em vez disso, armazene sua versão distribution, development.local.php.dist no controle de versão.

3.8.5. Arquivo de Configuração (no Nível do Módulo)

Na imagem 3.4, você pode ver que o módulo Application é enviado com seu aplicativo tem o arquivo module.config.php, no qual você coloca seus parâmetros específicos do módulo. Vamos veja o arquivo module.config.php do módulo Application:

<?php
namespace Application;

use Zend\Router\Http\Literal;
use Zend\Router\Http\Segment;
use Zend\ServiceManager\Factory\InvokableFactory;

return [
    'router' => [
        'routes' => [
            'home' => [
                'type' => Literal::class,
                'options' => [
                    'route'    => '/',
                    'defaults' => [
                        'controller' => Controller\IndexController::class,
                        'action'     => 'index',
                    ],
                ],
            ],
            'application' => [
                'type'    => Segment::class,
                'options' => [
                    'route'    => '/application[/:action]',
                    'defaults' => [
                        'controller'    => Controller\IndexController::class,
                        'action'        => 'index',
                    ],
                ],
            ],
        ],
    ],
    'controllers' => [
        'factories' => [
            Controller\IndexController::class => InvokableFactory::class,
        ],
    ],
    'view_manager' => [
        'display_not_found_reason' => true,
        'display_exceptions'       => true,
        'doctype'                  => 'HTML5',
        'not_found_template'       => 'error/404',
        'exception_template'       => 'error/index',
        'template_map' => [
            'layout/layout'           => __DIR__ . '/../view/layout/layout.phtml',
            'application/index/index' => __DIR__ . '/../view/application/index/index.phtml',
            'error/404'               => __DIR__ . '/../view/error/404.phtml',
            'error/index'             => __DIR__ . '/../view/error/index.phtml',
        ],
        'template_path_stack' => [
            __DIR__ . '/../view',
        ],
    ],
];

Neste arquivo, você registra os module's controllers, coloca informações sobre regras de rotas para mapear URLs para seus controllers, registrar plugins dos controllers e também registrar as views e os views helpers (aprenderemos mais sobre esses termos neste capítulo e nos próximos capítulos).

3.8.6. Combinando os arquivos de configuração

Quando uma aplicação está sendo criada, arquivos de configuração fornecidos pelo módulo O diretório APP_DIR/config/autoload está sendo incorporado em uma grande array, Assim, cada parâmetro de configuração fica disponível para qualquer parte do site. Então, potencialmente, você pode substituir alguns parâmetros especificados pelos módulos.

Você também pode ter visto o arquivo de configuração "combinado" ao instalar o PHP, onde existe o arquivo principal php.ini e vários arquivos extras de configuração, que são incluídos no arquivo principal. Essa separação torna a configuração da sua aplicação mais refinada e flexível, porque você não precisa colocar todos os seus parâmetros em um único arquivo e editá-lo toda vez que precisar que necessitar mudar alguma coisa.

Os arquivos de configuração são carregados na seguinte ordem:


Top