Minhas impressões sobre o Kohana Framework


Kohana Framework Logo

Alguns dias atrás, ouvi falar novamente do Kohana Framework, um fork do Code Igniter, feito por diversos usuários e entusiastas do CI que se sentiam órfãos por não poder ajudar no desenvolvimento do framework, já que a EllisLab é a única mantenedora do código.

O framework promete ser mais rápido, fácil de usar, de extender e, principalmente, “Strict PHP 5″, isto é, desenvolvido com todas as infinitas vantagens que a versão 5 do PHP tem em relação à 4. Como na minha opinião, a preocupação de manter compatibilidade com PHP 4 do CI impede a evolução do framework, achei melhor testar e escrevo aqui minhas impressões.

Comunidade

Quando vou analisar um framework novo, a primeira coisa que eu faço é ver se a comunidade é ativa, se existe um wiki ou fórum bem documentado. Lição aprendida depois de testar um bom framework, e só depois descobrir que até o fórum de desenvolvedores estava deserto.

A primeira impressão é que existe uma boa quantidade de usuários cadastrados e de mensagens no fórum. Os desenvolvedores parecem bastante ativos no fórum, e isso é um bom sinal.

Documentação

A documentação do Code Igniter é muito boa, bem acima da média. O Kohana tem uma documentação muito parecida, mas não muito bem adaptada à realidade dele. Os exemplos não utilizam o dito “Strict PHP 5″, e passam uma imagem distorcida da implementação e qualidade do framework.

É bem verdade que ainda são drafts, e a documentação está em fase de maturação, mas documentação é algo que faz muita falta quando queremos entender o funcionamento do framework.

Organização dos Arquivos

O Kohana já vem com a aplicação e o Core separados “de fábrica”, ao contrário do Code Igniter. Outra diferença é que, com a excessão de um arquivo de configuração da aplicação, todos os arquivos de configuração foram para a pasta system\, isto é, não é possível ter configurações diferentes para aplicações diferentes. O Rafael me alertou que é possível sim ter configurações diferentes pra aplicação, para isso, basta copiar o arquivo e colar lá, que ele usa sempre o da aplicação.

Foi desenvolvida uma padronização de nomemclatura das classes, diferenciando possíveis classes da mesma entidade nas diferentes camadas do sistema. Pra simplificar, a entidade Usuário terá o Usuario_Controller, e o Usuario_Model.

Libraries & Helpers

Assim como o CI, é possível estender o framework sobrescrevendo as libraries. Identifiquei um problema em algumas Libraries, onde existem métodos privados. Dessa forma, ao criar uma extensão, pode não ser possível aproveitar todas as funcionalidades da classe. Acredito que os métodos deveriam ser protegidos e muito provavelmente “final”, para não serem modificados.

Os helpers deixaram de ser apenas funções (ufa!) e se transformaram em métodos estáticos. Existe uma classe chamada “arr”, que poderia ser apenas uma extensão da classe Array da SPL.

Diversos

Mais alguns itens interessantes (ou não):

  • Não notei nenhuma diferença entre a camada de visualização do Kohana e CI;
  • O Kohana trabalha com autoload, e isso facilita a criação de extensões de Controllers e Models, que não sejam pela forma padrão, conforme eu disse num artigo sobre especialização de Controllers no CI.

Conclusão

Gostei do Kohana e acho que ele tem muito potencial pra superar o Code Igniter. Já começaram uma campanha no fórum em busca de pessoas pra ajudar na documentação e no desenvolvimento do framework.

Como é um projeto relativamente novo, óbviamente precisa de ajustes e uma comunidade forte é crucial neste sentido. Se voce acredita no potencial do CI e adoraria usar uma versão PHP 5, pense bem se não vale mais a pena colaborar com a comunidade do Kohana.

  1. #1 by Daniel Costa - February 2nd, 2008 at 21:23

    O segundo parágrafo do tópico organização dos arquivos é falso.

    Acredito que seja questão de tempo até que o CI seja feito somente para PHP 5. PHP 4 mórreu. E com a nova release, ele tá comprovando que veio pra brigar com gente grande.

  2. #2 by Newton Wagner - February 4th, 2008 at 11:42

    Daniel, removi também o segundo parágrafo. Valeu por avisar.

    Bem, não vi tantas diferenças do CI 1.6 pro 1.5, e pelo discurso que já li do Rick Ellis (autor do CI e dono da EllisLab) e do Derek Allard (trabalha pra EllisLab) no fórum oficial do CI, eles não negam que não têm interesse em perder a compatibilidade com o PHP 4.

    Isso por que muitos usuários do Expression Engine, software da EllisLab, ainda rodam PHP 4 e não têm interesse em migrar.

    Eu gosto do CI, mas vejo potencial no Kohana por ser desenvolvido pela comunidade e não estar preso à um outro software.

  3. #3 by Marco Telles - February 4th, 2008 at 13:36

    Olá Newton,

    Passei os últimos 3 dias "brincando" com o Kohana.
    Assim como você, gostei muito dele. O fato de trabalhar com objetos e não com funções torna o código muito mais intuitivo e claro.
    Usar uma view como um objeto facilita muito as coisas e o simples ato de instanciar um objeto da maneira padrão: new, é um alento (ao menos para mim).
    Só tenho dúvidas quanto a sua citação "… não estar preso à um outro software.": até que ponto isso pode ser benéfico ou prejudicial ?
    Participando em alguns projetos Open Source que dependem somente da comunidade, vejo a maioria agonizando ou mesmo fechados. Claro que existem exceções, mas… ;-)
    Por outro lado, quando há uma empresa (ou um grupo) forte fica mais fácil aglutinar colaboradores. Veja o Zend, OpenSuse, Ubuntu…
    Enfim, tenho algumas ressalvas quanto ao futuro do Kohana e continuo no CodeIgniter. Cada vez mais vejo como única alternativa o Zend. Esse sim vai dar muito trabalho. A documentação está crescendo absurdamente com vários exemplos práticos sendo disponibilizados, o que facilita enormemente seu entendimento, área que o ZF ficava devendo já que sua documentação técnica sempre foi fora de série.

    Abs

  4. #4 by Daniel Costa - February 4th, 2008 at 14:17

    Newton,

    Não viu tantas diferenças na nova versao? Mas ele não podia "mudar" muito mesmo não senão ficava complicado manter a compatibilidade, mas se você falou em relação à novas funcionalidades de cara já vi duas que atendem minhas necessidades como desenvolvedor, que são o carregamento de mais de uma view na mesma execução e, pelo que entendi, a possibilidade de extender os models e acessá-los das libraries. Isso eu resolvia com gatos e agora fazendo corretamente pelo framework, ficou uma maravilha. Sem falar das melhorias no A.R. que inclusive manipula schemas a partir de agora.

    Marco,

    Você falou tudo sobre o risco de um projeto open não ser atrelado à um produto ou algo do tipo. Dessa forma, tudo depende da sorte, somente dela.

  5. #5 by Newton Wagner - February 4th, 2008 at 14:55

    Bem, ZF não é atrelado a um software, e sim a uma empresa, o que são coisas bem distintas. E imagino que este é o caso dos outros softwares citados.

    O CI é atrelado a uma empresa, EllisLab, E ao seu software carro-chefe, que é o Expression Engine. Enquanto o EE não puder evoluir pro PHP 5 por causa dos clientes, o CI não vai evoluir.

    Claro que uma empresa por trás pode bancar algumas coisas, e isso o Kohana não tem mesmo. Mas não acho que dependa da sorte, depende da comunidade mesmo, é nisso que está baseado o software livre.

    Sobre o CI:
    - O "autoload" de models é só na inicialização na aplicação, e não em tempo de execução, como no Kohana, utilizando o __autoload() do php!

  6. #6 by Wagner Adriano - November 26th, 2009 at 11:02

    Bem o Kohana tem todos os princípios para dar certo ! É um framework brilhante baseado na orientação à objetos e muito bem estruturado (profissionalmente). É questão de tempo até ele suplantar seus concorrentes e ganhar apoio de várias empresas de grande porte e da comunidade opensource. quem viver verá…

  7. #7 by Ilton Barbosa - December 9th, 2009 at 10:26

    Minha pergunta é:
    - como o Kohana se adaptará ao PHP 6? vai continuar sendo compatível com o PHP 5?
    - Já há algum trabalho sendo feito neste sentido?

  8. #8 by newton - December 9th, 2009 at 11:26

    Olá Ilton, ainda é cedo para se pensar em PHP 6 na prática, ainda mais a integração do framework à nova versão. Muitas das novidade anunciadas para a versão 6 foram lançadas na 5.3, e até hoje não vi nenhum comentário sobre previsão de lançamento.

(will not be published)