Executando Aplicações

Após instalar o Yii, você tem uma aplicação Yii funcional que pode ser acessada pela URL http://hostname/basic/web/index.php ou http://hostname/index.php, dependendo da sua configuração. Esta seção introduzirá a funcionalidade embutida da aplicação, como o código é organizado, e como a aplicação manuseia as requisições em geral.

Info: Por questões de simplicidade, por todo este tutorial de "Primeiros Passos" assume-se que você definiu basic/web como a raiz de documentos do seu servidor Web, e configurou a URL de acesso de sua aplicação como http://hostname/index.php ou algo semelhantes. Por favor ajuste as URLs em nossas descrições às suas necessidades.

Funcionalidade

A aplicação básica instalada contém quatro páginas:

  • A página inicial, exibida quando você acessa a URL http://hostname/index.php,
  • a página "About" (Sobre),
  • a página "Contact" (Contato), que exibe um formulário de contato que permite que usuários finais entrem em contato com você via e-mail,
  • e a página "Login", que exibe um formulário de login que pode ser usado para aurenticar usuários finais. Tente fazer o login com "admin/admin", e você perceberá que o item do menu principal "Login" mudará para "Logout".

Estas páginas compartilham um cabeçalho e rodapé em comum. O cabeçalho contém uma barra de menu principal que permite a navegação através das diferentes páginas.

Você também deverá ver uma barra de ferramentas no rodapé da janela do navegador. Essa é uma ferramenta de depuração fornecida pelo Yii para registrar e exibir várias informações de depuração, tais como mensagens de logs, status de respostas, as consultas de banco de dados executadas, e assim por diante.

Estrutura da Aplicação

Os diretórios e arquivos mais importantes em sua aplicação são (assumindo que o diretório raiz de sua aplicação é basic):

basic/                  caminho base de sua aplicação
    composer.json       usado pelo Composer, descreve as informações de pacotes
    config/             contém as configurações da aplicação e outras
        console.php     a configuração da aplicação de console
        web.php         a configuração da aplicação Web
    commands/           contém classes de comandos do console
    controllers/        contém classes de controllers (controladores)
    models/             contém classes de models (modelos)
    runtime/            contém arquivos gerados pelo Yii durante o tempo de execução, tais como logs e arquivos de cache
    vendor/             contém os pacotes do Composer instalados, incluindo o próprio Yii framework
    views/              contém arquivos de views (visões)
    web/                raiz da aplicação Web, contém os arquivos acessíveis pela Web
        assets/         contém os arquivos de assets (javascript e css) publicados pelo Yii
        index.php       o script de entrada (ou bootstrap) para a aplicação
    yii                 o script de execução dos comandos de console do Yii

Em geral, os arquivos na aplicação podem ser divididos em dois tipos: aqueles em basic/web e aqueles em outros diretórios. Os primeiros podem ser acessados diretamente via HTTP (ou seja, em um navegador), enquanto os segundos não podem e nem deveriam.

O Yii implementa o padrão de arquitetura modelo-visão-controlador (MVC), que se reflete na organização de diretórios acima. O diretório models contém todas as classes de modelos, o diretório views contém todos os scripts de visões, e o diretório controllers contém todas as classes de controladores.

O diagrama a seguir demonstra a estrutura estática de uma aplicação.

Estrutura Estática de uma Aplicação

Cada aplicação tem um script de entrada web/index.php que é o único script PHP acessível pela Web na aplicação. O script de entrada recebe uma requisição e cria uma instância da aplicação para gerenciá-la. A aplicação resolve a requisição com a ajuda de seus componentes, e despacha a requisição para os elementos do MVC. São usados Widgets nas views para ajudar a construir elementos de interface de usuário complexos e dinâmicos.

Ciclo de Vida da Requisição

O diagrama a seguir demonstra como uma aplicação gerencia uma requisição.

Ciclo de Vida da Requisição

  1. Um usuário faz uma requisição ao script de entrada web/index.php.
  2. O script de entrada carrega a configuração da aplicação e cria uma instância da aplicação para gerenciar a requisição.
  3. A aplicação resolve a rota solicitada com a ajuda do componente de aplicação request.
  4. A aplicação cria uma instância de um controller para gerenciar a requisição.
  5. O controller cria uma instância de um action (ação) e aplica os filtros para a ação.
  6. Se qualquer filtro falhar, a ação é cancelada.
  7. Se todos os filtros passarem, a ação é executada.
  8. A ação carrega um modelo de dados, possivelmente a partir de um banco de dados.
  9. A ação renderiza uma view, fornecendo a ela o modelo de dados.
  10. O resultado renderizado é retornado pelo componente de aplicação response (resposta).
  11. O componente response envia o resultado renderizado para o navegador do usuário.