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 simpicidade, 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 comohttp://hostname/index.php
ou algo semelhantes. Por favor ajuste as URLs em nossas descrições às suas necessidades.
Funcionalidade
A aplicação básica 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 projeto 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.
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 manejá-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.
- Um usuário faz uma requisiçao ao script de entrada
web/index.php
. - O script de entrada carrega a configuração da aplicação e cria uma instância da aplicação para gerenciar a requisição.
- A aplicação resolve a rota solicitada com a ajuda do componente de aplicação request.
- A aplicação cria uma instância de um controller para gerenciar a requisição.
- O controller cria uma instância da action (ação) e aplica os filtros da ação.
- Se qualquer filtro falhar, a ação é cancelada.
- Se todos os filtros passarem, a ação é executada.
- A ação carrega um modelo de dados, possivelmente a partir de um banco de dados.
- A ação renderiza uma view, fornecendo a ela o modelo de dados.
- O resultado renderizado é retornado pelo componente de aplicação response (resposta).
- O componente response envia o resultado renderizado para o navegador do usuário.