Executando Aplicações

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

Info: Por questões de simplicidade, por todo este tutorial de "Primeiros Passos" assume-se que você definiu basico/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 semelhante. Por favor, ajuste as URLs em nossas descrições conforme necessário.

Observe que, ao contrário do framework em si, após o template de projeto ser instalado, ele é todo seu. Você está livre para adicionar ou remover código e modificar o template conforme precisar.

Funcionalidade

O template básico de projetos instalado 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".

Essas páginas compartilham o mesmo cabeçalho e rodapé. O cabeçalho contém uma barra de menu principal que permite a navegação entre as diferentes páginas.

Você também deverá ver uma barra de ferramentas no rodapé da janela do navegador. Essa é uma ferramenta de depuração muito útil 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.

Além da aplicação Web, existe um script de console chamado yii, que está localizado no diretório raiz da aplicação. Esse script pode ser usado para executar rotinas em segundo plano e tarefas de manutenção da aplicação que são descritas na seção Comandos de Console.

Estrutura da Aplicação

Os diretórios e arquivos mais importantes em sua aplicação, assumindo que o diretório raiz dela é o basico, são:

basico/                  caminho base de sua aplicação
    composer.json       usado pelo Composer, descreve 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 basico/web e aqueles em outros diretórios. Os primeiros podem ser acessados diretamente via HTTP (ou seja, em um navegador), enquanto os demais não podem e deveriam ser acessados.

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 de aplicação para tratar a requisição. A aplicação resolve ("traduz") 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 trata 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 de aplicação para tratar a requisição.
  3. A aplicação resolve ("traduz") a rota solicitada com a ajuda do componente request da aplicação.
  4. A aplicação cria uma instância de um controller para tratar a requisição.
  5. O controller cria uma instância de uma 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 alguns modelos (models) de dados, possivelmente a partir de um banco de dados.
  9. A ação renderiza uma view, passando a ela os modelos de dados.
  10. O resultado renderizado é retornado pelo componente response (resposta) da aplicação.
  11. O componente response envia o resultado renderizado para o navegador do usuário.