phpSCConf 2010

Esta semana acontece a phpSCConf aqui em Joinville e tive o prazer da minha palestra sobre o Kohana ser selecionada para este evento.

Minha palestra será no sábado 28/Ago as 17:15h e o título é Desenvolvimento Ágil com Kohana Framework, confira toda a grade do evento.

Se você procura tutoriais sobre o Kohana, clique aqui

Controllers no Kohana 3

Um controller é um arquivo que contém uma classe que vai gerenciar todo o fluxo da aplicação.Se você não conhece MVC, é uma boa hora para estudar porque o Kohana é todo MVC.

MVC

Os controllers comunicam-se diretamente com os models enviando e recebendo informações, muitas das informações recebidas são repassadas as views para serem renderizadas no navegador do usuário, e podem também ser recebidas das views dentro dos controllers para serem processadas pelos models novamente.

Enfim, deu pra perceber que o controller é quem controla o fluxo de informações e da aplicação :)
Trabalhar com Controllers no Kohana é muito fácil, vamos ver como:

Convenções para Controllers

  • O arquivo deve ser gravado em application/controller
  • O nome do arquivo deve ter o mesmo nome da classe, em minúsculo.
    Exemplo: artigos.php
  • O nome da classe deve conferir com o nome do arquivo, iniciada de Controller_ e com a primeira letra em maiúsculas.
    Exemplo: Controller_Artigos
  • A classe deve ser extendida do Controller base (ou de outro controller).
    Exemplo: Controller_Artigos extends Controllers
  • Os métodos que serão acessíveis pela URL devem ser públicos e precedidos por _action.
    Exemplo: public function action_todos()

Acessando e Requisitando um Controller

Por padrão, o acesso a um controller é feito da seguinte forma:

http://dominio.com/index.php/<controller>/<action>

Então para acessarmos o controller artigos e a action todos, nosso exemplo ficaria assim:

http://dominio.com/index.php/artigos/todos

Criando um Controller

Seguindo nosso exemplo, vamos criar um controller artigos:

application/controller/artigos.php
class Controller_Artigos extends Controller
{
  public function action_index()
  {
    $this->request->response = "A resposta para a vida, o universo e tudo mais é 42!";
  }
}

Acessando http://dominio.com/index.php/artigos/index (ou dominio.com/artigos/ porque a action_index é a padrão, por default) teremos o seguinte resultado:

A resposta para a vida, o universo e tudo mais é 42!

Recebendo Parâmetros via URL

Como o controller é responsável pelo fluxo de informações dentro da aplicação, uma das grandes utilidades é receber informações. Uma das formas mais simples é via URL. Vamos aprimorar nosso exemplo, solicitando artigos pelo seu número:

class Controller_Artigos extends Controller
{
  public function action_index()
  {
    $this->request->response = 'A resposta para a vida, o universo e tudo mais é 42!';
  }

  public function action_ver($numero=0)
  {
    // Rotina para pesquisar artigos
    // {...}
    $this->request->response = "Você solicitou o artigo número $numero";
  }
}

No exemplo acima, acessando http://dominio.com/index.php/artigos/ver/12 teremos o seguinte retorno:

Você solicitou o artigo número 12

Funções Privadas em Controllers

Em determinadas situações precisamos manter algumas funções disponíveis como public mas não queremos que elas sejam acessadas pela URL, neste caso é só não usar o prefixo action_ no nome da function.

class Controller_Artigos extends Controller
{
  public function megasena()
  {
    $this->request->response = 'Os números da megasena são ...';
  }
}

E assim se tentarmos acessar http://dominio.com/index.php/artigos/megasena não teremos acesso a esta função dentro do controller, como esperado!

Conclusão

Nos próximos tutoriais do Kohana vamos trabalhar com Views, Models e depois a troca de informações entre eles.
Qualquer problema ou dúvida, fique a vontade nos comentários.

Simples, não? É Kohana!
E é por isso que eu gosto :)

Usando Memcache com Kohana PHP

O Memcache é um sistema de cache de memória distribuída de alta performance, que permite acesso rápido a objetos que são armazenados em seu cache. A utilização vai da criatividade e necessidade do programador, que pode armazenar resultados de consultas, imagens, objetos, códigos para rápido acesso posterior.

Servers
Creative Commons License photo credit: JohnSeb

O uso de Memcache normalmente segue um padrão:

  1. O aplicativo recebe uma consulta do usuário ou do aplicativo.
  2. O aplicativo verifica se os dados necessários para satisfazer a consulta estão no cache de memória.
  3. Se os dados estiverem no cache de memória, o aplicativo utiliza os dados.
  4. Se os dados não estiverem no cache de memória, o aplicativo consulta o armazenamento de dados e armazena os resultados no cache de memória para solicitações futuras.

Legal, e no Kohana?

Primeiro passo, vamos copiar o arquivo /system/config/cache.php para /application/config/cache.php
Configure o arquivo para que fique desta forma:

$config['default'] = array(
  'driver'   => 'memcache',
  'params'   => '',
  'lifetime' => 3600,
  'requests' => 1000
);

Você pode alterar os parâmetros como precisa, onde sugiro:

lifetime = 3600 segundos (1h de timeout)
requests = 1000 (mil requisições de timeout)

E se o MemCache estiver em outro servidor?

Ai está, uma dica importante! Se você não executa o MemCache no mesmo servidor do Kohana, você precisa alterar o arquivo cache_memcache.php  em application/config. Se você tiver mais de um servidor memcached, você pode adicioná-las ao array $config['servers']. Veja um exemplo:

$config['servers'] = array(
  array(
    'host' => '127.0.0.1',
    'port' => 1234,
    'persistent' => FALSE
  )
);

Exemplos

Pronto as configurações, agora é a hora tão esperada em usar o cache, e realmente é a etapa mais fácil:

// Instancia o cache
$cache = Cache::instance();

// Tentando obter dados do cache
$retorno = $cache->get('item');

if(!$retorno)
{
  // Dados não retornaram, obtendo dados da origem
  $retorno = ORM::Factory('teste')->dados();

  // Gravando novo cache
  $cache->set('item',$retorno);
}

Simples, não? É Kohana e é por isso que eu gosto!

Conhecendo o framework Kohana PHP

Kohana PHP

Kohana é um framework PHP 5 que utiliza orientada a objeto (OOP) e o modelo de arquitetura MVC (Model View Controller).

Ele é um framework que é baseado no CodeIgniter e quando algumas coisas não iam bem na evolução do CodeIgniter e a comunidade achou que poderia contribuir de forma efetiva no andamento do projeto de forma livre, foi criado o Kohana. No começo ele era chamado de Blue Flame, e por infringir algumas patentes, posteriormente seu nome foi alterado para Kohana.

Bom, chega de papo e vamos ao que interessa.
O que o Kohana tem de melhor?


Liberdade no desenvolvimento

O Kohana é projetado e mantido pela comunidade e não por uma empresa como é o CodeIgniter. O desenvolvimento do Kohana é dirigido por um time de pessoas dedicadas que necessitam de um framework para solucões rápidas e poderosas.


Praticidade

Nada de precisar ficar configurando bootstraps mirabolosos ou fazendo mil configurações em arquivos XML/YAML/whatever.
Instale, configure pouca coisa e vá trabalhar. O trabalho sujo já foi feito pra você, use o que ele tem de melhor


Strict PHP 5 OOP

PHP4 já era! PHP5 com orientação a objetos oferecem muitos benefícios e maior segurança: visibility protection, carregamento automático de classes, sobrecarregamento, interfaces, classes abstratas e singletons.


Extremamente leve

Kohana não possui dependências de extensões PECL ou bibliotecas da PEAR. Bibliotecas gigantescas e monolíticas são evitadas a favor de otimizar as solucões desenvolvidas.


GET, POST, COOKIE e SESSION funcionam como esperado

Kohana não limita seu acesso aos dados globais, mas oferece filtros e protecão contra XSS (Cross Site Scripting). Ele oferece formas seguras e limpas de acessar estes dados, sem precisar ficar ficar dando voltas no palheiro.


Carregamento automático de classes

Estas são carregadas sob demanda, de acordo com a necessidade da sua aplicação. Sem precisar ficar dando loading em bootstraps, sem precisar ficar declarando em controllers quais classes do framework vá utilizar.


Não existem conflitos de namespace

Todas as classes estão adequadas para permitir componentes com nomes similares, a favor de uma API mais coerente.


Recursos em Cascata / Extensibilidade

Quase todo o Kohana pode ser sobrecarregado por métodos que você mesmo pode escrever sem precisar editar os arquivos do core do framework. Além de permitir qualquer customização, resulta em atualizaçãoes mais seguras e organização de forma transparente no desenvolvimento.


Biblioteca baseada em “Drivers” e API consistente

Bibliotecas podem ter diferentes “drivers” para manipular diferentes APIs transparentemente. Por exemplo, múltiplas opcões de armazenamento dos dados de sessão estão disponíveis (banco de dados, cookie e nativo), visto que a interface é uniforme. Isso permite que novos “drivers” sejam desenvolvidos para bibliotecas de terceiros já existentes, mantendo a API consistente e transparente.


Manipulacão de Eventos

Handlers de Eventos baseados no padrão Observador permitem uma maior customizacão.


Módulos Extras

Com todas as características acima, vários módulos foram escritos por entusiastas e pela comunidade. Hoje o Kohana permite integrações com várias bibliotecas, incluindo qualquer biblioteca do Zend Framework. É o que eu sempre falo: Kohana + Zend Framework = Killer Combo


Simplesmente faça o upload

Kohana não tem necessidade de mil configurações a parte no seu provedor, e executa muito bem em qualquer provedor de hospedagem de respeito que tenha PHP 5, sem paranóias. Desenvolva e faça o upload!


Rápido ciclo de desenvolvimento

Resultados de desenvolvimento rápido em uma resposta mais rápida aos erros do usuário e alterações no software.


Curva de aprendizado pequena

O tempo para aprender a utilizar framework é bem menor do que em relação a outras frameworks. Realmente, isto é incomparável!


E agora?

Se você gostou do que leu, convido a baixar o Kohana e brincar um pouco com ele.
Em poucas horas estará usando ele no seu próximo projeto!
http://kohanaframework.org

Gostou? Quer aprender como instalar e configurar?
Veja mais artigos sobre o Kohana

Simples não? É Kohana!
E é por isso que eu gosto!