# Inicialização (Bootstrapping) ¶

A inicialização refere-se ao processo de preparação do ambiente antes que uma aplicação comece a resolver e processar um pedido de requisição. A inicialização é feita em duas etapas: O script de entrada e a aplicação.

No script de entrada, a classe de autoloaders de diferentes bibliotecas são registradas. Inclui o autoloader do Composer através do seu arquivo `autoload.php` e o autoloader do Yii através do seu arquivo `Yii`. O script de entrada, em seguida, carrega a configuração da aplicação e cria uma instância da aplicação.

No construtor da aplicação, as seguintes etapas de inicialização serão realizadas:

1. O método preInit() é chamado, na qual algumas propriedades da aplicação de alta prioridade serão configuradas, como o basePath.
2. Registra o manipulador de erro.
3. Inicializa as propriedades da aplicação a partir da configuração da aplicação.
4. O método init() é chamado, que por sua vez chamará o método bootstrap() para executar os componentes de inicialização.
   - Inclui o arquivo `vendor/yiisoft/extensions.php` de manifesto da extensão.
   - Cria e executa os componentes de inicialização declaradas pelas extensões.
   - Cria e executa os componentes da aplicação e/ou os módulos declarados na propriedade bootstrap da aplicação.

Como as etapas de inicialização tem que ser feitos antes da manipulação de cada requisição, é muito importante que mantenha este processo limpo e otimizado o máximo possível.

Tente não registrar muitos componentes de inicialização. Um componente de inicialização é necessário apenas se quiser participar de todo o ciclo de vida do processo da requisição. Por exemplo, se um módulo precisar registrar uma análise de regras de URL adicionais, deve ser listados na propriedade bootstrap de modo que as novas regras de URL possam ter efeito antes que sejam usados para resolver as requisições.

No modo de produção, habilite um cache de bytecode, como o PHP OPcache ou APC, para minimizar o tempo necessário para a inclusão e análise os arquivos PHP.

Algumas aplicações de larga escala possuem configurações complexas, que são divididos em vários arquivos menores. Se este for o caso, considere guardar o cache de todo o array da configuração e carregue-o diretamente a partir deste cache antes da criação da instância da aplicação no script de entrada.