Usando Fragments no Kohana

Fragments é um recurso muito bacana que está disponível no framework Kohana desde a versão 3.0, que permite de forma simples e rápida fazer cache de alguma view ou trecho HTML.

Basicamente você pode usar Fragments quando o tempo de leitura do fragmento for menor do que o tempo de geração do mesmo contéudo. Isso pode ser muito útil naqueles casos onde você tem um menu ou parte do seu layout que pode ser processada uma única vez e sempre ser carregada de um cache em vez de ser processada a view a cada requisição.

Como usar

Vamos usar o exemplo do menu:

// Cache do fragmento por 10 minutos
if (!Fragment::load('viewMenu', Date::MINUTE * 10))
{
	// Tudo até a chamada Fragment::save() será gravado como fragmento
	echo html::anchor('inicio','Início');
	echo html::anchor('kohana','Kohana');
	echo html::anchor('plugins','Plugins');
	echo html::anchor('contato','Contato');

	// Salva o fragmento em cache
	Fragment::save();
}

O código já comentado fica bem mais fácil do que explicar :)
Simplificando, funciona da seguinte forma:

  1. Fragment::load() tenta carregar o fragmento do cache
  2. Se não encontrar retornará false, e ficará aguardando o trecho a ser guardado neste fragmento até a chamada Fragment::save()
  3. O padrão de armazenamento de cada fragmento é 30 segundos, mas você pode especificar um timeout na chamada Fragment::load()
  4. Você pode forçar um fragmento ser excluído usando Fragment::delete() ou usando timeout como zero
Kohana Fragments, exemplo de uso

Sem inspiração pra uma imagem, postei o código de exemplo :)

Não é interessante usar Fragments para guardar variáveis, objetos ou ainda resultados de banco de dados. Para objetos mais complexos o módulo Cache é muito mais robusto e eficiente.

É simples, é Kohana!
É por isso que eu gosto :)

Usando hífen em URL’s no Kohana PHP

Se você prefere usar hífen (ou hífens) nas URL’s do seu projeto com Kohana, isto é muito simples. Basta extender a classe Request para gerenciar isso.

Salve no arquivo application/classes/request.php:

<?php defined('SYSPATH') or die('No direct script access.');
class Request extends Kohana_Request
{
	public function execute()
	{
		$this->action(str_replace('-', '', $this->action()));
		$this->controller(str_replace('-', '', $this->controller()));
		return parent::execute();
	}
}

A função str_replace elimina todas as ocorrências de hífens em controllers e actions da sua URL. Mas você pode adaptar e usar conforme precisar no seu projeto, substituindo por algum outro caractere, se essa for a necessidade.

Kohana: URL's com hífen

Kohana: URL's com hífen

Assim, permite por exemplo você tem uma URL
http://seuprojeto.com/sobre-nos/localize-no-mapa
ser redirecionada para o controller sobreNos e a action localizeNoMapa

É simples, é Kohana!
É por isso que eu gosto :)

Meu ambiente de desenvolvimento em 7 itens

Algumas semanas pra cá está rolando um meme na internet, onde fui convidado pelo @silasribas a postar no meu blog como é o meu ambiente de desenvolvimento:

1) Mac OSX: Desde a phpSCConf deste ano eu estou utilizando um Macbook Pro 13 para desenvolver. Para quem veio do Ubuntu foi uma migração tranquila e suave, e que por mim não precisa ter via de retorno: tenho um Unix por trás, estabilidade, uma interface bonita e nunca mais precisei ficar me preocupando quanto tenho de memória livre ou se a luz do HD estava direto acesa, recomendo!

Macbook Pro 13

Macbook Pro 13

2) Netbeans e Textmate: Nunca fui xiita com nenhuma IDE ou editor. Mas sempre que via uma opção melhor passava a utilizar ela. Gosto muito de usar o Netbeans pelo folding que ele faz no código, pelo autocomplete e pela integração com o phpUnit. E o Textmate? Gosto de usar para escrever HTML e Python, afinal quem consegue viver sem seus bundles? Awesome :)

3) Kohana: Usei por um ano o Codeigniter e fiquei maravilhado com sua facilidade e agilidade no desenvolvimento. Desde o primeiro fork do Kohana (quando era nomeado Blue Flame) venho usando ele e não abro mão da sua estabilidade, leveza e agilidade no desenvolvimento em PHP.

4) Git: Ainda uso SVN para projetos que mantenho, mas para novos venho dando preferência ao Git. Adoro o mágica que ele faz no merge mesmo quando membros da equipe trabalham no mesmo arquivo por dias. Como ferramenta GUI uso o smartGit.

5) Terminal: Alguns amigos gostam de me zoar que sou preguiçoso e prefiro GUI para algumas tarefas chatinhas, mas continuo gostando do Terminal. Nada substitui aquela sensação de que você está no controle do que vai ser executado.

6) Evernote: Guardo todo meu to do e task list nele. Consigo ter acesso web sem instalar, no Windows, no Mac e no Ubuntu. Se estou navegando e preciso guardar uma URL ou texto, se estou em uma tela e preciso guardar um print screen ele me ajuda, perfeito e gratuito.

7) Pomodoro: A Pomodoro Technique me devolveu aquela sensação de tarefa concluída em refatorar uma tarefa de 2 dias em várias micro tarefas de 30 minutos. Descanso nos breaks devidamente e nos próximos 25 minutos o trabalho volta a render. No Mac uso uma aplicação chamada Pomodoro mesmo, que se integra perfeitamente ao SO. Em outros ambientes uso o Focus Booster.

A melhor parte vem agora, convidar outras pessoas a participar do meme:

Palestra do Kohana na phpSCConf

Na última semana ocorreu a phpSCConf e estou compartilhando meu material usado na palestra sobre Desenvolvimento Ágil com Kohana Framework.

Foto Oficial da #phpSCconf 2010

Foto Oficial da #phpSCconf 2010

Foi muito interessante ver o número de pessoas presentes que já tiveram contato ou conheciam o Kohana (tanto como o CodeIgniter). Surpreendeu minhas expectativas sobre quantas pessoas estão usando o Kohana para facilitar e agilizar o desenvolvimento web.

Confira os slides da palestra