Archive for the ‘Kohana’ Category:
Instalando o framework Kohana PHP
Continuando esta série de posts sobre o Kohana, hoje vamos falar como fazer o download e instalar este framework!
Estou assumindo que seu ambiente de trabalho atenda os requisitos mínimos:
- Servidor com suporte a Unicode
- PHP 5.2.3+
- Um servidor HTTP (sério?!)
Dica: Kohana roda muito bem com Apache 1.3+, Apache 2.0+, lighttpd, e Microsoft IIS.
A instalação é um processo muito simples e com certeza você conseguiria fazer isto mais rápido do tempo que leva pra ler este texto, acredite!
Esqueça tudo o que você já viu em outros frameworks em montar bootstraps malucos, usar receitas de bolo imensas ou escrever inúmeros arquivos de configuração para que o seu framework possa trabalhar.
Kohana é direto, leve e fácil de usar e permite que você use melhor o seu tempo desenvolvendo suas aplicações!
Vamos ao que interessa:
- Download do Kohana 2.3.4 em http://kohanaphp.com.br/download
- Você pode selecionar vários módulos, bibliotecas de terceiros e linguagens (i18n) no seu download, de forma dinâmica
- Descompacte o arquivo ZIP no webroot do seu servidor
- Renomeie a pasta Kohana_v2.3.4 para kohana
- Dependendo do seu sistema, você precisará dar permissões 755 em todos os arquivos e 644 nas pastas
- application/cache/
- application/logs/
- No seu browser acesse http://localhost/kohana/ e se tudo correr bem, verá algo similar a esta tela

- Na pasta <webroot>/kohana apague o arquivo install.php
- Pronto!
Se você quiser, pode acessar a página de exemplos (bem simples) que mostra um pouco da praticidade do Kohana em http://localhost/kohana/index.php/examples
Conhecendo o framework 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://kohanaphp.com.br
Confira também várias publicações da comunidade brasileira no http://planet.kohanaphp.com.br
No próximo post: como instalar e configurar o Kohana
É Kohana! E é por isso que eu gosto!
Kohana PHP – ORM Conventions
No Kohana temos a facilidade de trabalhar com convenções em vez de configurações, isto dá agilidade e comodidade ao desenvolvedor que não precisa ficar configurando inúmeros arquivos de mapeamento de banco de dados para que sua aplicação funcione perfeitamente.
Porém, quando vamos trabalhar com databases que não seguem estas convenções (o que pra mim é algo muito comum) ou que já atendem a outros sistemas tambéme e não podem ser modificadas, temos de configurar somente as excessões para que tudo continue funcionando perfeitamente.
Algumas destas convenções, e suas excessões:
Nomes de tabelas no plural
Nomes de tabelas devem estar no plural. Por padrão o ORM obtém o nome da tabela e determina seu plural com ajuda do helper inflector.
Convenção: Ex: users, invoices.
Excessão: Declarar a propriedade table_name
protected $table_name = 'usuarios';
Models no singular
Enquanto pela convenção as tabelas no banco devem ter seu nome no plural, o nome do arquivo e do model deve ser no singular.
Convenção: NomedaTabela seguido de _Model
class User_Model extends ORM {}
Autoincrement
Toda tabela deve ter um campo autoincrement + primary key chamado id
Excessão: No model, declarar a propriedade primary_key
protected $primary_key = 'meucampoid';
Foreign Keys
Chaves estrangeiras devem ser nomeadas no banco de dados como nomeDoModel seguido de _id
Exemplo: invoice_id, user_id
Excessão: No exemplo abaixo, a tabela invoices esteja relacionada a users, porém na tabela invoices a chave estrangeira chame-se user_fk (que não segue o padrão sugerido)
No model Invoice_Model, declare a propriedade foreign_key
class Invoice_Model extends ORM {
protected $foreign_key = array('user' => 'user_fk');
}
Tabelas Pivôs
Tabelas pivôs devem ser nomeadas pelos nomes das tabelas pais na ordem alfabética (legal e organizado não?), nesta forma tabela1_tabela2. Vamos usar como exemplo o relacionamento de muitos-para-muitos entre a tabela users e as tabelas de functions, tabela de junção deve ser nomeada no banco como functions_users
Simples, não? É Kohana!
E é por isso que eu gosto.
Kohana3, novidades e mudanças!
Agosto já está no fim e tudo indica que ainda este ano será lançado o Kohana 3, uma nova versão que além de muitas melhorias vem acompanhada de muitas mudanças na sua estrutura. Tenho nos meus rascunhos já alguns artigos para revisar e publicar sobre utilização do Kohana, porém acredito que terei de atualizar os mesmos para que fiquem 100% compatíveis com esta nova versão.
Para quem tem pressa, a resposta está ai: a migração de aplicações Kohana 2.x para 3.0 não será automática e exigirá revisão em alguns pontos do desenvolvimento, a começar que partimos de MVC para HMVC
Que raios é HMVC?
Não complique!
HMVC (Hierarchical Model View Controller) é um padrão de design novo, porém muito semelhante ao MVC que você já conhece, adicionado de uma hierarquia no design original do MVC. Quando uma requisição URI for solicitada, qualquer parte do MVC pode chamar outro item da hierarquia, o que permite o desenvolvedor uma maior flexibilidade e modularização do sistema que estiver utilizando. A vantagem é que se você quiser continuar com o padrão MVC, nada vai impedir você trabalhar desta forma.
Bootstrap
Quem me conhece sabe que eu odeio não gosto muito bootstrap do Zend Framework. O ZF é uma plataforma invejável tanto pela sua estabilidade como pelas suas características, porém montar arquivos de bootstrap decentes no ZF nunca foi sucesso pra mim. Sei lá, acho que fiquei mal acostumado com o Kohana onde eu ligo o carro e saido acelerando, e no ZF eu tinha que toda vez parafusar as 4 rodas e calibrar todos os pneus antes de sair rodando a aplicação
Voltando ao assunto, KO3 terá um bootstrap dedicado, porém você não vai precisar sair montando um do zero e sofrer horas para deixar ele funcionando: um bootstrap padrão que atende praticamente todas as aplicações já fará parte do pacote, somente o tunning da aplicação ficará por sua conta, como você já fazia no Kohana 2.x
Arquivos de Configurações
Boa parte dos arquivos do diretório application/config e suas diretivas também foram movidas para o arquivo de bootstrap. Quem já teve contato com Zend Framework estará bem familiarizado com esta mudança.
Controllers viraram Classes
Os controllers que estavam em /application/controllers vão para /application/classes/controllers.
Libraries e Helpers seguem o mesmo padrão e são todos classes agora, tudo fica mais organizado e OO.
Estrutura de diretórios e autoloading do KO3 também mudou: Uma nova convenção de arquivos foi desenvolvida de forma que simplifica a identificação e localização de classes. Todas as classes fazem uso do sublinhado (_). A estrutura de nomes é separada, como anteriormente, mas você vai notar uma diferença no formato.
Teste_Controller agora será Controller_Teste (/application/classes/controller/teste.php)
Kohana_Session_Cookie corresponde a /system/kohana/session/cookie.php
Ainda quero fazer alguns testes com o novo driver ORM, porém não me sobrou tempo ainda!
Acho que com o lançamento oficial da nova versão (que hoje está em RC3) posso publicar uma análise mais voltada ao ORM, que será exclusivamente baseado no PDO
Utilizando Template_Controller no Kohana
O Kohana utiliza o padrão MVC para a construção de aplicações, e nas views é que toda a informação é mostrada em nossa aplicação. Todo o HTML, CSS, JS (e não só eles, como também qualquer XML, JSON, REST) é enviado pela view.
O Kohana tem um bom suporte nas views, inclusive para nested views, porém hoje vamos falar da Template_Controller. Quando você vai desenvolver um site/sistema/aplicação que tem um layout padrão, a Template_Controller é a ferramenta ideal. Veja como é simples utilizar:
Vamos criar um controller chamado Teste em application/controllers/teste.php
<?php defined('SYSPATH') OR die('No direct access allowed.');
class Teste_Controller extends Template_Controller {
// Você pode especificar qual template deseja utilizar, opcionalmente
public $template = 'view_padrao';
public function index()
{
$this->template->titulo = 'Teste';
$this->template->texto = 'Lorem ipsum dolor ...';
}
}
Por padrão, o Kohana invoca uma view chamada Template que deve estar em /application/views/template.php
Você pode facilmente mudar qual template deverá ser chamado, como fizemos no exemplo acima usando a view view_padrao
Na view que você especificar, você pode montar toda a estrutura que terá sua aplicação como você faria sem qualquer framework, utilizando esta view como template para seu projeto. Há mais exemplos de uso na documentação oficial.
Simples, não? É Kohana!
E é por isso que eu gosto
Kohana bundle for Textmate/e-texteditor
If you program in PHP using Kohana and as editor TextMate (Mac) or e-Texteditor (Win) this bundle is for you!
http://code.google.com/p/kohana-bundle/
How to install?
- Download
- Unzip
- Just copy the bundle to the “Bundles” folder in the user settings application directory, usually something like …
- “C:\Documents and Settings\[username]\Application Data\e” or
- “C:\Users\[username]\Application Data\e” or
- “C:\Users\[username]\AppData\Roaming\e”
- Note: That bundles located under the “user settings application” directory, have precedence over e’s default bundles, which are located in e’s installation directory, e’s installer will overwrite all changes which are done in e’s installation directory!
Vale a pena investir em Ruby on Rails? Django?
Vejo muita gente que já desenvolve pra web ficar seduzida com as facilidades de alguns frameworks que estão na moda, que estão no topo da mídia especializada. Não é a toa que Ruby on Rails e Django realmente estão neste círculo de modinha, pois eles realmente facilitam a vida do programador.
Existem inúmeros artigos malhando o pau no PHP – vamos falar a verdade, todo programador web que se preze ao menos já programou algo em PHP, a não ser que você só viva no mundinho do Mac – por ele não ser produtivo quando comparado a Django ou ROR. Porém muitos esquecem que Django e ROR não são linguagens de programação, a maioria quando lê estes artigos simplesmente ignora que temos Pyton e Ruby por trás desta brincadeira.
Ora, como assim Bial?
Então o correto é comparar frameworks PHP com ROR e Django?
Sim, porque estamos falando de frameworks e não de linguagens de programação.
Neste quesito quem inovou muito foi o Ruby on Rails, tanto que frameworks PHP vieram a implementar e até copiar seu comportamento e algumas funcionalidades, como por exemplo o CakePHP.
Tá, mas eu preciso aprender uma nova linguagem?
Não necessariamente, há frameworks PHP que podem atender perfeitamente muitas funcionalidades bem bacanas do ROR e Django sem que você precise ter um tempo dedicado a uma nova linguagem e o seu tempo de maturação e experiência nesta nova empreitada. Um dos frameworks que utilizamos com boa frequencia e que nos dá agilidade no código com uma fácil escalabilidade e boa manutenção, é o Kohana PHP. Um framework totalmente strict PHP5, com suporte MVC e ORM, URL limpas e de uma pequena curva de aprendizado (eu diria que você trabalha efetivamente nele em questão de 1 ou 2 dias, é muito rápido até pra quem nunca viu MVC).
Não vou postar aqui um tutorial de “como criar um blog em 5 minutos”, porque isto já existe. Mas vou mostrar da mesma forma que a galera do Rails gosta de mostrar que são produtivos e vou mostrar como podemos trabalhar com uma tabela de produtos de forma muito fácil no Kohana. Para isto, precisamos criar nosso model:
class Produto extends ORM {}
Não, eu não esqueci código!
É só isto mesmo e tudo já funciona, legal não?
Para quem já conhece MVC, veja como é moleza trabalhar com os controllers
class Produto_Controller extends Controller {
// Listando todos os produtos
public function todos(){
$objProduto = new Produto();
print_r $objProduto->find_all();
}
}
E nem precisei escrever uma linha de SQL! E você pode acessar isto em http://seusite.com/produto/todos. Note que o sistema de URL’s é limpo e bem prático. Veja outro exemplo onde acessamos algum produto pelo código
class Produto_Controller extends Controller {
// Listando todos os produtos
public function todos(){
$objProduto = new Produto();
print_r $objProduto->find_all();
}
// Procurando um produto pelo ID
public function procurar($id){
$objProduto = new Produto($id);
print_r $objProduto;
}
}
Se acessarmos http://seusite.com/produto/procurar/2 o sistema irá localizar o produto com o ID=2 sem que você precise escrever uma única linha de código SQL para isto. Muitos frameworks trabalham com recursos fantásticos que novatos adoram, como por exemplo a automágica para gerar telas administrativas e facilidades como gerar o banco a partir dos models, e fazer deploy por linhas de comando.
Porém quando você trabalha profissionalmente, geradores de código não são boas soluções para seus problemas, e felizmente em frameworks como o Kohana não precisamos de geradores de código automágicos para ter produtividade, pois temos controle real da aplicação sem comprometer agilidade e manutenção do código, sem contar que não são necessários escrever arquivos de deploy e executar tarefas em linha de comando. Você simplesmente ativa a aplicação no modo produção, e tudo está pronto no servidor.
Enfim, este não é um post para ensinar Kohana a fundo, pois há tutoriais disponíveis para isto. Nem muito menos para falar mal do Rails ou do Django, que estão na sua fase de vitrine. Porém, é pra mostrar a você que não é preciso aprender uma nova linguagem para ter produtividade no desenvolvimento para web, se você já programa em PHP.
Este artigo teve seus links propositalmente apontados para versões nacionais dos portais de linguagens/frameworks.
Kohana Documentation in CHM
If you are a webdeveloper too, and write some code in Kohana in a Windows environment: you need a documentation in CHM format!
To facilitate things, I decided that compile all the kohana official documentation in a CHM file and i’m sharing with the community!
Download and share with your friends too!
This site use Portuguese as default language, but this content would be better distributed if I write in English
