Visão geral da inicialização e bootstrap
Para executar o aplicativo Commerce, as seguintes ações são implementadas em pub/index.php:
- Inclua app/bootstrap.php, que executa rotinas de inicialização essenciais, como manipulação de erros, inicialização do carregador automático, definição de opções de perfil e definição do fuso horário padrão.
- Criar uma instância de \Magento\Framework\App\Bootstrap.php
- Criar uma instância do aplicativo Commerce: \Magento\Framework\AppInterface
- Executar o Commerce
Lógica de execução de Bootstrap
O objeto de inicialização usa o seguinte algoritmo para executar o aplicativo Commerce:
-
Inicializa o manipulador de erros.
-
Cria o gerenciador de objetos e os serviços compartilhados básicos que são usados em todos os lugares e afetados pelo ambiente. Os parâmetros de ambiente são inseridos corretamente nesses objetos.
-
Afirma que o modo de manutenção não está habilitado; caso contrário, encerra.
-
Afirma que o aplicativo Commerce está instalado; caso contrário, encerra.
-
Inicia o aplicativo do Commerce.
Qualquer exceção não capturada durante a inicialização do aplicativo é automaticamente passada de volta para o Commerce no método
catchException()
, que você pode usar para lidar com a exceção. O último deve retornartrue
oufalse
:- Se
true
: o Commerce tratou a exceção com êxito. Não há necessidade de fazer mais nada. - Se
false
: (ou qualquer outro resultado vazio) o Commerce não manipulou a exceção. O objeto de inicialização executa a sub-rotina padrão de tratamento de exceções.
- Se
-
Envia a resposta fornecida pelo objeto de aplicativo.
note info INFO As afirmações de que o aplicativo Commerce está instalado e não em modo de manutenção são o comportamento padrão da classe \Magento\Framework\App\Bootstrap
. Você pode modificá-lo usando um script de ponto de entrada ao criar o objeto de inicialização.Exemplo de script de ponto de entrada que modifica o objeto de inicialização:
code language-php <?php use Magento\Framework\App\Bootstrap; require __DIR__ . '/app/bootstrap.php'; $params = $_SERVER; $params[Bootstrap::PARAM_REQUIRE_MAINTENANCE] = true; // default false $params[Bootstrap::PARAM_REQUIRE_IS_INSTALLED] = false; // default true $bootstrap = Bootstrap::create(BP, $params); /** @var \Magento\Framework\App\Http $app */ $app = $bootstrap->createApplication('Magento\Framework\App\Http'); $bootstrap->run($app);
Tratamento de exceção padrão
O objeto de inicialização especifica como o aplicativo Commerce trata as exceções não capturadas da seguinte maneira:
- No modo de desenvolvedor, exibe a exceção como está.
- Em qualquer outro modo, o tenta registrar a exceção e exibir uma mensagem de erro genérica.
- Encerra o Commerce com o código de erro
1
Aplicativos de ponto de entrada
Temos os seguintes aplicativos de ponto de entrada (ou seja, aplicativos definidos pelo Commerce que são usados pelo servidor Web como um índice de diretório):
Ponto de entrada HTTP
\Magento\Framework\App\Http opera da seguinte maneira:
-
Determina a área do aplicativo.
-
Inicia o controlador frontal e os sistemas de roteamento para localizar e executar uma ação do controlador.
-
Usa um objeto de resposta HTTP para retornar o resultado obtido da ação do controlador.
-
Tratamento de erros (na seguinte ordem de prioridade):
-
Se você estiver usando o modo de desenvolvedor:
- Se o aplicativo do Commerce não estiver instalado, redirecione para o Assistente de configuração.
- Se o aplicativo do Commerce estiver instalado, exiba um erro e o código de status HTTP 500 (Erro interno do servidor).
-
Se o aplicativo Commerce estiver no modo de manutenção, exiba uma página de aterrissagem amigável "Serviço indisponível" com o código de status HTTP 503 (Serviço indisponível).
-
Se o aplicativo do Commerce estiver não instalado, redirecione para o Assistente de Instalação.
-
Se a sessão for inválida, redirecione para a página inicial.
-
Se houver qualquer outro erro de inicialização do aplicativo, exiba uma página amigável "Página não encontrada" com o código de status HTTP 404 (Não encontrada).
-
Em qualquer outro erro, exiba uma página amigável "Serviço indisponível" com resposta HTTP 503 e gere um relatório de erros e exiba sua ID na página.
-
Ponto de entrada de recurso estático
\Magento\Framework\App\StaticResource é um aplicativo para recuperar recursos estáticos (por exemplo, CSS, JavaScript e imagens). Ele adia qualquer ação com um recurso estático até que o recurso seja solicitado.
<your Commerce install dir>/pub/static
.No modo padrão ou de desenvolvedor, uma solicitação para um recurso estático não existente é redirecionada para o ponto de entrada estático de acordo com as regras de regravação especificadas pelo .htaccess
apropriado.
Quando a solicitação é redirecionada para o ponto de entrada, o aplicativo Commerce analisa o URL solicitado com base nos parâmetros recuperados e encontra o recurso solicitado.
-
No modo desenvolvedor, o conteúdo do arquivo é retornado para que, sempre que o recurso for solicitado, o conteúdo retornado esteja atualizado.
-
No modo padrão, o recurso recuperado é publicado para que possa ser acessado pela URL solicitada anteriormente.
Todas as solicitações futuras do recurso estático são processadas pelo servidor da mesma forma que os arquivos estáticos; ou seja, sem envolver o ponto de entrada. Se for necessário sincronizar os arquivos publicados com os originais, o diretório
pub/static
deve ser removido; como resultado, os arquivos são automaticamente republicados com a próxima solicitação.
Ponto de entrada do recurso de mídia
Magento\MediaStorage\App\Media recupera recursos de mídia (ou seja, quaisquer arquivos carregados no armazenamento de mídia) do banco de dados. Ele é usado sempre que o banco de dados é configurado como um armazenamento de mídia.
\Magento\Core\App\Media
tenta encontrar o arquivo de mídia no armazenamento de banco de dados configurado e gravá-lo no diretório pub/static
e, em seguida, retornar seu conteúdo. Em caso de erro, ele retorna um código de status HTTP 404 (Não encontrado) no cabeçalho sem conteúdo.