Primeiras impressões sobre o Yii framework
Seguindo a febre de frameworks, que borbulham a todo momento, em todas as linguagens, de todos os gostos, surge então mais um! Na verdade, se fosse mais um eu nem me daria ao trabalho de estar escrevendo sobre algo que seria irrelevante, mas esse tal de Yii Framework ao que me parece veio para ficar, mesmo tendo pouquíssimo contato com ele, acho que dá para afirmar isso com alguma certeza.
O que é o Yii Framework?
O Yii é um framework que está sendo mantido e desenvolvido pelo criador do framework Prado, que é um famoso framework PHP baseado no conceito de event-driven programming, que a grosso modo seria um framework em que o seu fluxo é determinado por eventos.
Comparação com outros frameworks
Quando digo que o Yii não é mais um framework MVC, digo, pois ele parece ser muito mais maduro, estável, flexível e bem projetado que o restante, além do que ele é focado em performance, ou seja, foi desenvolvido pensando em aplicações Web “parrudas” e que precisam ser escaláveis.
Tenho alguma experiência com frameworks em PHP, já desenvolvi projetos que estão em produção usando o Kohana, Code Igniter e o Drupal (também é um framework!), além de já ter desenvolvido aplicações dummy usando o Zend Framework, Akelos e Cake, e por isso posso afirmar que o Yii é diferenciado. Por exemplo, o Code Igniter eu gosto bastante, mas ele é muito lightweight e não é PHP 5, o Zend Framework é sólido, mas na verdade é mais um conjunto de componentes do que um framework, o Kohana, que é um fork do CI, é interessante, mas ainda precisa comer muito feijão com arroz, o Cake sinceramente não me agrada e o Akelos é bem interessante, mas tem pouca comunidade e documentação. Nenhum desses, com exceção do ZF, me parece ser um projeto a longo prazo como o Yii.
O Yii é baseado em várias idéias do queridinho Ruby on Rails, e assim como o RoR possui geradores de código para gerar: controllers, models, scaffoldings apenas usando linha de comando. Ainda não me acostumei muito com essas idéias de geradores de código hehe, sou um pouco conservador em relação a isso, e muita “mágica” as vezes me preocupa, mas de qualquer maneira esses geradores trazem uma agilidade absurda e no final das contas se houver um equilíbrio entre agilidade e controle do que está sendo gerado, acho que vale muito a pena.
Principais atrativos
Além de ser bem projetado, com uma arquitetura bem definida, uso de design patterns e facilidade de ser extendido, o que me atraiu no Yii foi algumas features mais avançadas e que outros frameworks não possuem nativamente, como: sistema de cache em camadas (usando memcached e apc), suporte a web services (WS-*), internacionalização de verdade, sistema de autenticação/permissão usando RBAC, integração nativa com jQuery, acesso a dados usando DAO, ORM + ActiveRecord (com lazy loading, inclusive), etc.
Outro ponto que me convenceu foi a documentação, que é bem completa, clara e objetiva, possuindo manuais, tutorias, screencasts, fóruns e API.
O framework também é todo modularizado, permitindo que componentes sejam desenvolvidos para serem totalmente desacoplados da aplicação.
Aprendizado
A curva de aprendizado do Yii é muito mais alta que a do CI ou do Kohana, por exemplo, apesar de no site do framework dizer o contrário. Mesmo com o framework tendo uma documentação extensa, skeletons para construção da aplicação e geradores de código, entender como funciona o framework e sua arquitetura não é tão simples como os outros frameworks citados anteriormente, mas isso não quer dizer que o código seja ilegível, ou difícil de entender, muito pelo contrário, como a tendência dos frameworks hoje em dia é descomplicar e humanizar, acredito que o Yii tenho seguido essa linha, apenas acho que para um desenvolvedor inexperiente será mais árduo aprender o Yii do que o CI.
O que pode melhorar
Como é um framework recente, mesmo tendo muitas funcionalidades mais avançadas, algumas outras ainda senti falta. Por exemplo, o framework ainda não tem um suporte para testes, seja BDD ou TDD e isso hoje em dia é inaceitável. O RoR, por exemplo, é um framework que tem a parte de testes muito forte dentro do framework e toda sua comunidade também é assim, em PHP isso é um pouco diferente, portanto seria interessante que o Yii começasse a fornecer mecanismos para realização de testes, porém nada impede que se integre o SimpleTest ou PHPUnit com o Yii.
Outra coisa que senti falta também foi suporte para serviços REST, o framework apesar de oferecer suporte a Webservices, só oferece suporte para Webservices no padrão SOAP/WSDL, REST seria muito interessante, até mesmo porque um dos pilares do framework é performance.
Conclusão
Estou animado com esse novo framework, apesar de ter pouco contato, senti seriedade no trabalho, mas só posso afirmar tudo que eu disse depois que eu tiver uma experiência real com o framework.
No momento estou participando de um job novo, em que estou definindo o que será usado como framework web, na verdade, não gosto e não costumo usar tecnologias que não tenho experiência em projetos que estou a frente, mas como esse projeto não é crítico e nem complexo, possa ser que eu use o Yii para ter uma opinião formada sobre o mesmo, e caso eu opte realmente por essa opção, irei comunicando o progresso.
Se você gostou desse tópico, por favor considere deixar um comentário ou se inscreva no feed e tenha no futuro todos os tópicos entregues diretamente no seu agregador.








Muito bom, é bom saber que os frameworks PHP estão evoluindo, ainda não conhecia o Yii, mas depois do seu post vou dá uma passadinha no site pra saber um pouco mais!
Valeu pela dica!
Como eu disse na lista de discussão, eu estou em duvida em aprender o cake ou o Yii e até o symphony, meu objetivo é ficar mais a fundo em OOP e ao que me parece, symphony tem uma curva de aprendizado muito alta também. Porém, eu vi no phpframeworks.net .org sei la o que, que o Yii é cotado como o melhor até agora.
Te pergunto, eu mecho com o CI, seria muito muito cabuloso essa mudança?
Abraços e realmente foi um ótimo post.
Para ser sincero eu acho que vai sentir um impacto inicial grande, porque o conceito dos dois frameworks são diferentes, além do que eu acho que no CI as coisas são mais fáceis por não serem tão complexas, mas tudo vai depender também da sua experiência e do seu conhecimento.
Baixa o framework, faz uma aplicaçãozinha simples, de blog por exemplo (tem tutorial disso lá) e tira suas conclusões.
Você não deve escolher um framework pelo o que está mais bem cotado, esqueça isso, isso é gosto pessoal, você deve escolher uma solução que atenda as suas necessidades e que te traga produtividade.
Lógico que não tem como desconsiderar algumas questões como documentação ampla e comunidade participativa.
Mto esclarecedor esse post, orgulho de ser de Niterói…rs
Mas ainda estou na dúvida…. Comecei aprender PHP há pouco tempo, uns 3 anos, e o pouco que sei aprendi fazendo trabalhos de templates e extensões para o Joomla, e lendo blogs como o seu, lendo muitos blogs todos os dias. Atualmente estou mudando minha abordagem com as interfaces, estudando Flex e tentando entrar no mercado de projetos que não sejam só um site, sabe?
Como não sou programadora por formação tem muita coisa que me escapa que eu nem sei dizer, mas por exemplo já testei o zend e consegui criar várias coisinhas e achei mto legal, mas já conheço todos os tutoriais de Zend+Flex que o google pode me proporcionar e minhas apps não funcionam =/ Então achei esse tal de Yii… Será que conseguiria finalmente fazer uma app no Flex com o Yii? Vou testar… Você recomendaria algum desses frameworks como melhor para se trabalhar com o Flex?
Olá Cynthia, tudo bom?
Então, eu conheço pouco sobre Flex, meu foco não é muito em aplicações RIA, mas pelo que sei do Flex é uma forma de se trabalhar com Flash usando uma comunicação entre cliente e servidor, assim como são feitas em linguagens web, como o próprio PHP.
Existem algumas maneiras de se trrabalhar com Flex.. a mais comum e efetiva é utilizando um formato chamado AMF, que felizmente o PHP dá suporte e tem uma implementação para o mesmo. Na verdade o que você precisaria seria um framerok que abstraisse isso tudo, certo? Olha não sei se o Yii oferece esse suporte, nunca precisei disso, mas dando uma olhada no site, parece que não, mas o que eu sei é queo CakePHP tem um suporte legal pra trabalhar PHP com Flex. Já deu uma olhada nele?
Espero ter ajudado.
Abraço :)
Olá!
Realmente, muito bom o seu post. Estou iniciando meus estudos com Frameworks e pelo que tenho lido o Yii tem me agradado muito.
Também estou para começar o desenvolvimento de um sistema web e vou me basear neste framework.
Abraço!
Olá, tudo bem?
meu amigo me mostrou esse framework e achei interessante. Vc poderia me ajudar sobre ele? Por onde começar, o que tenho que baixar? essas coisas assim.
Um abraço e agradeço
Muito bacana esse post! Acabei de sair de uma reunião e me falaram desse careta, aí resolvi pesquisar, e vi que ele é bem completo, falta algumas por ser novo, mas já está sendo uma mão na roda para os desenvolvedores.
Buenas Marcus,
Cara… trabalhei com PHP por 7 anos até 2007 e depois pulei para o desenvolvimento desktop, mas a alguns meses atrás voltei ao desenvolvimento web.
Aqui onde trabalho, o framework utilizado (por enquanto… heheheh) é o Spaghetti (projeto descontinuado pelo desenvolvedor), mas uma versão modificada da última que esta no site e o mesmo foi baseado em uma versão do CakePHP.
No final de 2007 eu estava começando a estudar alguma coisa sobre frameworks PHP, lembro que olhei o Cake, Symphony e o CI, talvez mais algum que não me recordo.
A questão é, não fui muito a fundo neste estudo e hoje confesso que tenho algumas dificuldades com o tal Spaghetti, além disso, por problemas legados da utilização do Spaghetti, a empresa me incumbiu de definir um novo framework, que seja moderno e atual, com comunidade bem ativa e boa documentação, com suporte a testes, etc., o que todo bom framework atual (opinião minha) deve oferecer.
Fiz uma boa pesquisa em vários frameworks do mercado (Prado, CakePHP, CI, Zend, Akelos, Yii, etc.) e meus finalistas ficaram o Zend, Yii e o Cake (achei interessante testa-lo, pois o Spaghetti foi baseado nele e também devido ao meu conhecimento no Spaghetti que provavelmente poderei utilizá-lo no Cake).
Comecei a trabalhar com o Zend, mas não fui muito a fundo pois o mesmo não gerava código funcional para as aplicações (bom… pelo menos foi o que eu consegui fazer) me obrigando a criar tudo do zero.
Neste ponto passei a trabalhar com o Yii e me encantei com o framework. Não exige instalação e é muito fácil de configurar. O Gii que é a aplicação web para geração dos conteúdos (controllers, models, CRUD, modules, etc.) é extremamente amigável e intuitiva. Por exemplo, um CRUD gerado a partir de um model qualquer, resulta em uma aplicação funcionar e de fácil manipulação.
Só encontrei um problema que me empata a vida e me confunde os neurônios, impedindo-me de escolhe-lo sem dúvida alguma: a documentação.
Não achei tão simples de compreender em alguns pontos, sem dizer que documentação em português é rara e normalmente encontra-se desatualizada. Não existe muitos podcasts sobre este framework.
E tudo isso dificulta até mesmo a própria divulgação do framework dentro da comunidade PHP que está sempre ávida em conhecer e aprender novas formas de maximizar seu trabalho e expadir seus horizontes, permitindo o desenvolvimento de aplicações mais complexas e mais seguras.
Bom… esta foi a minha experiência com o Yii, não quero desistir de utiliza-lo, mas encontro barreiras que me fazem escolher o Cake por exemplo. Sei lá!!
Queria a tua opinião sobre o meu caso.
O que tu fez para aprender o Yii, seguiu o uso dele naquele projeto?? Indicaria alguma coisa para facilitar o aprendizado??
Grande abraço!