Yii – estrutura básica da aplicação web

Dando continuidade à nossa série sobre o yii, começaremos a nos aprofundar no desenvolvimento utilizando o framework.

Após criar a aplicação “primeiraapp”, abra, em seu gerenciador de arquivos preferido, a pasta onde a mesma está localizada (por exemplo “c:\yii\primeiraapp”).

Teremos então a estrutura básica de pastas e arquivos de uma aplicação web criada pelo Yii:

assets -> o yii usa essa pasta para criar uma espécie de cache dos objetos utilizados em seu sistema.
css -> pasta com o css básico da aplicação.
images -> pasta criada para (obviamente) você utilizar para o armazenamento de imagens.
protected -> “core” da sua web app, falaremos com mais detalhes adiante.
themes -> como o próprio nome diz, aqui você armazenará o(s) tema(s) de sua aplicação. Também falaremos mais sobre esta pasta futuramente.

index.php -> é o arquivo de “ponto de entrada”/chamada de sua aplicação.
index-test.php -> é semelhante ao index.php, porém utilizado para testes unitários (sim, o yii permite os testes).

Estrutura da pasta protected:
Como o próprio nome diz, a pasta protected é protegida do acesso externo. Por exemplo, se alguém tentar acessar http://localhost/primeiraapp/protected/yiic.php através do navegador, não conseguirá, devido ao nível de proteção definido no .htaccess. Isso torna sua aplicação segura, fazendo com que o usuário tenha acesso somente ao que lhe for permitido.

A pasta protected contém várias subpastas Falaremos um pouco delas, mas sem nos aprofundarmos em todas:
commands -> aqui você poderá armazenar classes para uso em linha de comando. Apesar de nosso foco ser uma aplicação web, é possível no mesmo projeto utilizar a linha de comando para determinadas ações, caso necessário.
components -> nessa pasta você adicionará suas classes “utilitárias”, aquelas que você poderá usar em todo o sistema. Por exemplo, digamos que você tenha uma classe que criptografe senhas, ou use para o envio de e-mail. Você as salvará nessa pasta.
config -> nessa pasta ficam armazenados os arquivos de configuração do sistema.
controllers -> como mencionado nos artigos anteriores, o yii utiliza a metodologia MVC. Aqui são armazenados os controllers de sua aplicação.
data -> aqui são armazenados arquivos de dados. Por padrão, as aplicações do yii utilizam o sqlite. Em nosso projeto iremos utilizar o Mysql, o que explicarei depois.
extensions -> o yii permite que você crie ou utilize extensões de terceiros, tais como grids, combos, componentes para envios de e-mail, etc. Em um primeiro momento você até pode estranhar, pois a pasta parece parece ter a mesma finalidade da pasta components. Porém, a pasta components é utilizada especificamente para  guardarmos classes que somente nossa aplicação usará. Já a pasta extensions é utilizada mais genericamente, para adicionarmos componentes/extensões/classes que podem ser utilizados em diversos projetos, geralmente componentes de terceiros.
messages -> nessa pasta você poderá armazenar traduções das mensagens do yii.
migrations -> essa pasta é utilizada pelo yii para fazermos um “log” de mudanças na estrutura do banco de dados. Para entender melhor, leia este artigo.
models -> aqui serão armazenados os models de sua aplicação MVC.
modules -> Você também poderá criar módulos extras aqui, com suas próprias views e controllers, por exemplo, um módulo chamado “admin”.
runtime -> sua aplicação irá salvar aqui diversos itens, tais como logs, sessões, dados de componentes e outros.
tests -> aqui você armazenará os testes unitários, caso os utilize.
views -> nessa pasta você armazenará as views de sua aplicação.
yiic, yiic.bat, yiic.php ->  é o utilitário de linha de comando, ao criar uma aplicação o yii cria uma cópia em sua app.

No próximo artigo começaremos, enfim, a personalizar nossa aplicação.