cheap dedicated servers

Newton Wagner se desenvolvendo na web

31Jul/081

Estendendo Helpers no Kohana Framework

Os helpers no Kohana Framework não passam de classes estáticas (que não precisam ser instanciadas), e você pode precisar adicionar funcionalidades à um método ou criar suas próprias funcionalidades. Para isso, você vai precisar criar uma extensão do Helper.

O primeiro passo é ir até o diretório da sua aplicação (por padrão ele é chamado application) e criar um diretório chamado helpers, caso ele ainda não exista, claro, e criar um arquivo chamado MY_form.php. É importante ressaltar que o prefixo MY_ pode ser configurado.

No primeiro exemplo, vamos estender o form helper do framework para criar o input date. Neste caso, utilizamos o plugin datePicker para jQuery (biblioteca javascript) onde, para colocar o seletor de data (calendário) ao lado do combo, basta definir uma classe "date-pick" para o elemento HTML. Vamos ao código:

<?php defined('SYSPATH') or die('No direct script access.');
class form extends form_Core
{
	/**
	 * Creates an HTML form input date tag.
	 *
	 * @param string|array input name or an array of HTML attributes
	 * @param string       input value, when using a name
	 * @param string       a string to be attached to the end of the attributes
	 * @return string
	 */
	public static function date($data, $value = '', $extra = '')
	{
		if ( ! is_array($data))
		{
			$data = array('name' => $data);
		}
		// Insere atributo class com valor date-pick
		$data['class'] = (isset($data['class'])) ? $data['class'].' date-pick' : 'date-pick';
		return form::input($data, $value, $extra);
	}
} // End form class

Dessa forma, ao usar o código abaixo, será gerado um input text com a classe "date-pick", e o jQuery faria todo o serviço:

<?php echo form::date('dt_aniversario'); ?>

Você também não terá problemas caso passe outros atributos:

<?php echo form::date( array('name'=>'dt_aniversario', 'title'=>'Data de Aniversário') ); ?>

Na imagem abaixo segue um exemplo do funcionamento do campo data:

Artigos Relacionados:

5Jun/080

Kohana Framework: Lista de discussão

Aviso ao pessoal que provou o Kohana framework e gostou: Algumas pessoas estão se movimentando novamente e criaram a lista de discussão do framework em português, para discussões, dicas e dúvidas.

Artigos Relacionados:

1Feb/088

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.

Artigos Relacionados:

11Sep/070

Lançada versão 1.5.4 do Code Igniter

Não estou tendo muito tempo pra escrever por aqui, mas percebi, bem atrasado, que lançaram mais uma versão do Code Igniter, a 1.5.4, onde foram realizadas diversas correções.

Links interessantes:

Artigos Relacionados:

11Sep/0710

Zend Framework ou Code Igniter?

A muito tempo atrás, o Felipe Diesel pediu para eu fazer um comparativo entre os frameworks Code Igniter e Zend. Andei comentando sobre ambos, pois no trabalho optamos pelo Code Igniter, enquanto isso, havia optado pelo Zend Framework para tocar alguns projetos pessoais.

É bom lembrar que, quando optamos pelo CI, o Zend Framework ainda estava na versão 0.x, e descartamos a possibilidade de trabalhar nessa versão ainda beta. Mas vamos aos fatos

Code Igniter

Como eu já disse aqui antes, o Code Igniter é muito prático. Inspirado no Ruby on Rails, é possível começar o desenvolvimento da aplicação apenas configurando os diretórios (se você não usar o padrão) e conexão com banco.

Ele implementa o MVC e traz diversas funcionalidades pra facilitar o desenvolvimento, como o padrão Active Record, Scaffolding e bibliotecas como Paginação, Validação, Compactação (zip) e etc. Facilmente extensível com a implementação de plugins e helpers, além de possuir diversas ferramentas como um gerador de código e bibliotecas de interface como o Rapyd, que, na minha opinião, não foi bem integrado ao framework.

Os problemas que eu vejo no Code Igniter são pequenos detalhes, como a falta de padronização de nomenclatura de arquivos e, a pior delas, a desorganização do código do framework.

Zend Framework

Do outro lado, o Zend Framework é o framework PHP mais organizado dos que testei até hoje. Com nomenclatura de classes agregada aos caminhos do arquivo, é muito fácil encontrar o que você procura. Houve também uma preocupação em manter o código simples, pensando em manutenibilidade, que também tornou muito fácil a criação de extensões para o Zend, através de Helpers, Plugins e etc.

Por outro lado, pra você configurar o Zend Framework são necessários alguns passos a mais e um nível de conhecimento maior, porém, feito uma vez, você pode usá-la em todas as aplicações que for desenvolver, realizando apenas pequenos ajustes.

Conclusão

A grande verdade é que tudo depende da aplicação. Eu vejo o Zend Framework como algo mais robusto, para ser utilizado em aplicações que necessitem da organização e da base sólida da Zend, que assina o framework. Do outro lado, está o Code Igniter, ágil e prático.

O que você prefere?

Artigos Relacionados:

Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.