Neste artigo será apresentado um framework PHP que, embora não seja muito popular, é muito prático, fácil e eficiente para criar aplicações Web simples ou robustas. O Yii Framework é um excelente concorrente aos mais utilizados atualmente no mercado. Através do suporte às mais atuais tecnologias do mercado, o Yii vem crescendo de forma gigantesca no mundo dos desenvolvedores de sistemas escritos em PHP. Veja como funciona esta excelente ferramenta que dá um amplo suporte para os desenvolvedores.

Nota: No momento da criação deste artigo, a versão estável do Yii é a 1.1 . Embora seja possível realizar o download da versão 2, esta encontra-se em fase beta.

Um pouco sobre Yii

A palavra Yii é um acrônimo para “Yes, It Is”, que em tradução livre para o português significa “Sim, isto é”. Como diz o próprio nome do framework, são oferecidas ao desenvolvedor soluções rápidas e eficientes de acordo com o domínio (cenário) da sua aplicação. A proposta deste framework é fazer aplicações Web robustas e complexas, de uma forma fácil, intuitiva, poupando tempo e recursos valiosos do servidor. O Yii oferece uma grande experiência de desenvolvimento para o programador e uma boa usabilidade da aplicação para os usuários finais.

O Yii é open-source ou código aberto e é escrito totalmente na versão 5 da linguagem PHP, e por isso pode utilizar-se de todos os recursos de organização e praticidade da Orientação a Objetos, implementada no PHP 5. O Yii também traz consigo a arquitetura MVC na construção dos seus projetos, um dos fatores cruciais para a promoção de uma excelente experiência ao desenvolvedor. Sua estrutura de arquivos e pastas é muito bem organizada, bem como separa claramente o core do framework com o core da aplicação.

Além disso, o Yii possui suporte para todas as tecnologias utilizadas atualmente no mercado, no Front-End suporta HTML5, CSS3, Bootstrap (através da extensão Yii bootstrap), jQuery, entre outros. Enquanto que no Back-End suporta os bancos de dados PostGreSQL, MySQL , SQLite (nas versões 2 e 3), Microsoft SQL Server e Oracle.

Outro ponto a favor deste framework é a forma como ele trata o banco de dados do projeto. A classe CActiveRecord é a classe principal que representa todos os dados relacionais e não relacionais do banco de dados, ela possui atributos e métodos que realizam consultas ao banco. Dessa forma ela facilita a semântica e a legibilidade do código-fonte, uma vez que chamando métodos que realizam consultas SQL torna mais legível o seu código em vez de inserir inúmeras querys SQL nele.

Vale destacar a forma com a qual o Yii auxilia o desenvolvedor. O Gii, por exemplo, é um pequeno script que facilita, e muito, na criação de models, controllers e CRUD's. Há também a possibilidade da criação de widgets e extensões do framework que proporciona a máxima personalização da sua aplicação.

Criando a primeira aplicação: Hello World!

Para a realização destes passos será usado o sistema operacional Linux, com a distribuição Ubuntu, versão 14.04 LTS, tema Macbuntu aplicado. Os passos são muito semelhantes tanto no Linux quanto no Windows. Quando houver alguma diferença entre os sistemas operacionais será explicado como é feito nos dois sistemas.

Instalando servidor Apache

Antes de seguir com o tutorial, é necessário que se tenha um servidor local instalado em seu computador. Neste caso será usado o servidor Apache.

Para isso, no Linux, abra o seu Terminal e digite o seguinte código da Listagem 1.

Listagem 1. Instalando servidor Apache Linux.

sudo apt-get install apache2 

Já no Windows, basta realizar o download do XAMP, que é um pacote com os programas necessários para rodar sua aplicação web. É possível encontrá-lo em seu site oficial (https://www.apachefriends.org/download.html), executá-lo e iniciar sua instalação. O processo de instalação é simples e não exige tarefas complicadas.

Download do Software

A instalação do framework ocorre de modo simples. Através do site oficial do Yii Framework é possível realizar o download da última versão estável do projeto Yii. Também está disponível no repositório oficial da empresa o serviço no GitHub, caso o programador faça uso do controle de versões Git.

Preparando o ambiente da aplicação

Depois de baixado o arquivo, descompacte-o no diretório raiz do seu servidor Apache, conforme mostra a Figura 1.

Compactando o arquivo do Yii

Figura 1. Compactando o arquivo do Yii

Uma vez descompactado o arquivo, verifique se os recursos instalados em sua máquina são suficientes para rodar a sua aplicação. Para isso, acesse localhost/yii/requirements/. O resultado deve ser semelhante ao mostrado na Figura 2.

Testando requerimentos do Yii Framework

Figura 2. Testando requerimentos do Yii Framework.

Atente-se para o trecho “Conclusion”: lá estará uma mensagem apontando se o Yii Framework pode ou não rodar em seu servidor local.

Se o seu servidor estiver apto a rodar o Yii, abra o Terminal (no caso do Windows o prompt de comando) e entre na pasta do seu framework. Se o sistema operacional da máquina for Windows, é estritamente recomendado que execute o prompt de comando como administrador.

Agora execute o script Yiic para criar o seu projeto. Para isso, confira as Listagens 2 e 3.

Listagem 2. Criando projeto Yii no Linux.

sudo  ./yiic webapp ../../SeuDiretorio 

Listagem 3. Criando projeto Yii no Windows.

yiic webapp ../../SeuDiretorio 

Digite “yes” e pressione ENTER. Confira o resultado na Figura 3.

Criando a primeira aplicação

Figura 3. Criando a primeira aplicação.

Aguarde que o Yiic crie sua aplicação. Após a sua criação será mostrada uma mensagem avisando do sucesso na criação. Confira como ficou na Figura 4.

Figura 4. Aplicação criada com sucesso.

Pronto! Agora sua aplicação está criada. Para visualizá-la acesse localhost/SeuDiretorio/ .

Preparando arquivos

Você precisará dar permissão aos arquivos e diretórios (Servidores rodando Linux). Para ter a aplicação visualizada sem problemas em seu browser é preciso realizar alguns ajustes. Primeiramente, dê permissão “escrever/ler” para o seu diretório raiz. Sem este pequeno procedimento, ocorrerão problemas na execução de seus scripts PHP, entre outros. Caso haja a utilização de um servidor local na plataforma Windows não é necessário seguir este passo, haja visto que o próprio servidor realiza estas configurações de permissão para o usuário. Confira o código de autorização na Listagem 4.

Nota: Não é aconselhável o uso do parâmetro “-R” no comando “chmod”. Entretanto, para facilitar a visualização deste artigo esse foi utilizado. Este parâmetro serve para aplicar as alterações de forma recursiva, ou seja, em todas as pastas e subpastas contidas em “SeuDiretorio”.

Listagem 4. Alterando permissão de arquivos e diretórios do Yii no Linux.

sudo chmod 777 -R SeuDiretorio

Criando pastas obrigatórias

No momento da criação do seu site, o Yii grava arquivos em diretórios pré-definidos, embora algumas pastas não sejam criadas no utilitário Yiic. Para isso, crie os diretórios “assets“ (na pasta raiz do site) e “runtime” (dentro da pasta protected), de modo que o link absoluto para estas pastas fique “SeuDiretorio/assets“ e “SeuDiretorio/protected/runtime” respectivamente.

Depois de criadas as pastas, altere a permissão dos diretórios criados. Para tal, digite o código da Listagem 4 (no Linux) ou altere as permissões do diretório normalmente pelo Windows.

Entendendo a estrutura de arquivos

Agora que sua aplicação está criada, é necessário entender como o Yii organiza e trata suas pastas e arquivos. Alguns deles foram criados separadamente para facilitar a organização da sua aplicação. Este é o caso, por exemplo, das pastas “css” e “images”. Confira na Figura 5 uma ilustração que apresenta em árvore a hierarquia da estrutura da aplicação.

Estrutura de arquivos

Figura 5. Estrutura de arquivos.

Conheça agora algumas dessas pastas importantes:

  • ASSETS: Esta é a pasta responsável por armazenar todos os recursos adicionais de que a sua aplicação necessita. Aqui são guardados arquivos JavaScript (como jQuery), arquivos de folhas de estilo CSS para a estilização de Widgets do framework, além de algumas imagens que serão utilizadas no seu site.
  • CSS: Esta é a pasta responsável por armazenar as folhas de estilo do seu site. Por padrão o Yii armazena em subdiretórios da pasta “assets”, mas devido à subdivisão excessiva de diretórios, é criada uma pasta separadamente no diretório raiz. O uso desta pasta separada implica em um código, tanto CSS como JavaScript, mais limpo e mais legível.
  • IMAGES: Esta é a pasta responsável por armazenar as imagens do seu site. Assim como o conteúdo da pasta “css”, a pasta “images” também é criada separadamente para facilitar a legibilidade do seu código. Não é de boa prática armazenar arquivos de grande tamanho porque poderá haver lentidão ao carregar as páginas.
  • PROTECTED: Este é o coração do seu site. Aqui ficam armazenados os arquivos de configuração do seu aplicativo, além dos models, controllers e views contidas nele. Há também configurações internas do Yii relacionadas ao seu site e arquivos gerados pelo já mencionado utilitário Gii.

    • COMPONENTS: É o lugar onde ficam guardadas duas das principais classes base do Yii, “Controller” e “Component”.
    • CONFIG: Como o próprio nome deixa implícito, é o diretório onde ficam os scripts responsáveis pelas configurações gerais do projeto.
    • CONTROLLERS: Local onde ficam as classes Controller do site.
    • DATA: Aqui ficam guardados arquivos externos ao site. Embora eles estejam armazenados externamente possuem importância considerável. Um bom exemplo de uso deste diretório é o armazenamento de arquivos SQL, os quais trazem consigo consultas SQL que serão enviadas ao banco de dados.
    • MODELS: Aqui ficam armazenados os arquivos (classes) models da sua aplicação.
    • RUNTIME: Pasta responsável por armazenar os logs (registros) internos da sua aplicação.
    • TESTS: Pasta responsável por armazenar testes automatizados que poderão ser executados na sua aplicação.
    • VIEWS: Local onde ficam guardadas as views do seu site.
    • THEMES: Aqui ficam os arquivos relacionados aos templates do site, ou seja, os layouts que, posteriormente, serão aplicados no portal.

    Banco de dados relacional

    Utilizando a classe estática CActiveRecord, já citada anteriormente, é possível criar bancos relacionais de uma forma muito ágil e eficiente. Para isso, ao gerar o model pelo Gii, esta classe identifica automaticamente o relacionamento entre duas tabelas no banco de dados.

    Método RELATIONS().

    Este método é sobrescrito da classe CActiveRecord e retorna um vetor(array). Este vetor retornado, neste cenário, é uma propriedade do model e, consequentemente, identifica quais tabelas estão relacionadas. Confira na Listagem 5 o código de uma declaração de relacionamento. Para essa listagem será omitida a sintaxe da classe, sendo escrito apenas o método relations(), o que facilitará a visualização.

    Listagem 5. Criando relacionamentos no Yii.

    public function relations(){
          return array(
    	'Relacionamento' => array('Cardinalidade', 'NomeClasse', 'ChaveEstrangeira'),
          );
    }
    

    Na listagem acima está representada a criação de um relacionamento no Yii, em que 'Relacionamento' é o nome dado à relação. 'NomeClasse' é o model (classe referência) para definir o relacionamento, e 'ChaveEstrangeira' é a chave responsável por ser a “ponte” entre os dados relacionados. Por último, a 'Cardinalidade' é o grau de relacionamento entre as duas entidades (tabelas). Devido à estaticidade da classe CActiveRecord, para acessar atributos dela é necessário utilizar a palavra-chave “self::”. Veja na Listagem 6 o código de como declarar um relacionamento 1:N, por exemplo.

    Listagem 6. Criando relacionamento 1:N(um-para-muitos) no Yii

    public function relations(){
          return array(
           'Relacionamento' => array(self::BELONGS_TO, 'NomeClasse', 'ChaveEstrangeira'),
    	);
    }
    

    Cardinalidades

    Como se sabe, para haver um relacionamento entre duas tabelas é necessário possuir uma cardinalidade, ou seja, é necessário que haja um grau de relacionamento entre elas. Para tratar estas cardinalidades o framework age de forma correspondente ao valor da propriedade setada pelo desenvolvedor na classe CActiveRecord. Vejam a seguir quais são esses atributos e as quais cardinalidade estão relacionadas:

    • BELONGS_TO – Trata relacionamentos com cardinalidade 1:N (um-para-muitos), onde temos as Tabelas A e B. Dessa forma, a tabela B pertence à tabela A.
    • HAS_MANY – Trata relacionamentos com cardinalidade N:N (muitos-para-muitos), em que temos as Tabelas A e B. Sendo assim, A possui vários B.
    • HAS_ONE – Trata relacionamentos com cardinalidade 1:1 (um-para-um), na qual temos as Tabelas A e B. Com isso, a tabela A possui no máximo uma tabela B.
    • MANY_MANY – Trata relacionamentos com cardinalidade N:N (muitos-para-muitos) na qual temos as Tabelas A e B. Em relacionamentos N:N é necessário o uso de uma tabela associativa, esta tabela nada mais é do que uma decomposição da cardinalidade N:N para 1:N. O Yii trata MANY_MANY como a combinação do BELONGS_TO com o HAS_MANY.

    No site oficial do Yii, a equipe de desenvolvimento do framework explica de forma clara e fácil quais são as suas propostas, com uma documentação de API completa. Screencasts facilitam no entendimento da forma como procede a biblioteca. Pode parecer que não, mas uma boa documentação facilita, e muito, o trabalho do programador porque é impossível para qualquer profissional memorizar todas as classes, métodos e atributos do framework.

    Vale destacar também a preocupação da equipe do Yii para com os desenvolvedores. Há um setor composto apenas de tutoriais destinados tanto para os desenvolvedores iniciantes quanto para os intermediários na utilização desta biblioteca. Caso queira compartilhar seus conhecimentos ou até mesmo tirar dúvidas de outros programadores, é possível criar uma conta no fórum oficial do portal para interagir com outros profissionais.

    Com isso, este artigo teve o intuito de introduzir em linhas gerais o modo como funciona o framework Yii. Em termos mais específicos, buscou-se dar enfoque no tratamento positivo dos dados armazenados no banco, característica que favorece a preferência por este framework. Também pesquise em fóruns e sites sobre o Yii, há bastante artigos interessantes incrementando o seu conhecimento acerca desta excelente ferramenta que vem crescendo a cada dia mais no mercado.

    Lembre-se de que no mundo da tecnologia, mais especificamente no desenvolvimento de software, é imprescindível manter-se atualizado. Nunca tenha em mente que o seu conhecimento é o máximo, esteja sempre estudando, lendo novos artigos e troque, compartilhe o seu conhecimento.

    Ficou com alguma dúvida? Gostou do artigo? Quer deixar sua opinião? Deixe seu comentário. Até a próxima!

    Referências

    http://www.yiiframework.com/about/

    http://www.yiiframework.com/tutorials/

    http://www.yiiframework.com/doc/api/