Desenvolvimento Ágil com
   Kohana Framework




               Marcelo Rodrigo Wiebbelling
                       marcelorodrigo.com
                         @marcelorodrigo
Quem?
 Tecnólogo em Gestão de TI pela UNISUL
 Desenvolvedor PHP desde 1999


 Usa Kohana desde 2008


 Atua na área de desenvolvimento de aplicações

web e integração entre vários sistemas usando
tecnologias web
Você ainda programa assim?
MVC

             view




controller          model
Porque usar frameworks?
 Implementam MVC (Model, View, Controller)
para separar lógica, conteúdo e roteamento
 Implementam padrões e infraestrutura básica


 DRY - Reuso de código


 Soluções simples para problemas rotineiros


 Bibliotecas e Helpers para facilitar sua vida
Kohana?
   Configuração próxima a Zero, usando convenções
   UTF-8 e i18n
   PDO (mySQL, PGSQL, Oracle, Informix, SQLite, MSSQL, Firebird, ODBC)
   Licença BSD (copiar, distribuir, adaptar)
   Strict PHP 5 (5.2.3 e mais recentes)
   ORM
   Cache (memcache, sqlite, eaccelerator, filesystem)
   Segurança (cross-site scripting (XSS), validation/filter)
   Bibliotecas (Validation, Session, Cookies, Crypt, Cache, Benchmarking, Pagination, etc)
   Helpers (form, upload, image, html, url, text, date, etc)
Porque não Zend
Framework, Symfony,
CakePHP, YII, Spaghetti ,                 *




CodeIgniter?

                   * Pare de pensar em comida!
Porque você precisa
escolher um! Oras!
Todos tem seu valor,
mas ...
Porque usar o Kohana?
 Você precisa desenvolver aplicações rapidamente.
 Você precisa de um framework rápido e leve.


 Você precisa de um framework que não precise de

muita configuração e que seja compatível com sua
hospedagem.
 Você quer ter controle sobre o que o framework

está fazendo pra você.
 Você prefere escrever seu próprio código, em vez

de usar um que foi gerado automaticamente pra você.
Mas, porque Kohana?
   Baixe descompacte e use.
    Sem paranóias com bootstrap, arquivos config, XML, etc

 Curva de Aprendizado rápida
 ORM poderoso com Active Record


 É muito rápido, e muito leve


 Kohana é um fork do CodeIgniter, 100% em PHP 5


 Permite usar bibliotecas do Zend Framework


 Kohana + Zend Framework = Killer Combo
Cool!
Show me the code
Instalando
   Download em
    http://kohanaframework.org/download/kohana-latest

   Descompactar kohana-3.0.7.zip (versão atual stable)

   http://127.0.0.1/kohana/
Model

application/classes/model/apresentacao.php

class Model_Apresentacao extends ORM{
     public function seleciona($assunto_id){
       return $this->where(‘assunto_id’,’=‘,$assunto_id)->find_all();
     }
}
Nunca foi tão fácil obter dados

 where($campo, $operador, $valor)
 andwhere ($campo, $operador, $valor)

 orwhere($campo, $operador, $valor)

 order_by($campo, $direcao)

 having(...)

 join(...)

 groupby(...)




Em resumo: cobertura da maioria dos operadores SQL necessários
no dia-a-dia do desenvolvedor
Nunca foi tão fácil manipular dados


 $apresentacao = new Model_Apresentacao();

 $dados       = $apresentacao->find(84);

 $dados->nome = ‘Desenvolvimento ágil com Kohana Framework’;
 $dados->evento = ‘PHPSCConf 2010’;

 $dados->save();
Mamãe, gosto de escrever SQL!


DB::Query(‘SELECT * FROM tabela ORDER BY nome’);

DB::Query(‘UPDATE tabela SET ...’);

DB::Query(‘INSERT INTO tabela ..’);

DB::Query(‘DELETE FROM tabela WHERE ...’);
Controller

application/classes/controller/apresentacao.php

class Controller_Apresentacao extends Controller{
     public function action_index($assunto_id){
         $apresentacao                 = new Model_Apresentacao();
         $dados                        = $apresentacao->seleciona($assunto_id);
         $this->request->response      = View::Factory(‘apresentacao/index’)
                           ->bind(‘dados’,$dados)
                           ->render();
     }
}
View

application/views/apresentacao/index.php

<html>
    <body>
    <?php foreach($dados as $d){ ?>
        <p>Palestra <?php $d->nome ?> foi um sucesso, PHPPinga liberado!</p>
    <?php } ?>
    </body>
</html>
model - application/classes/model/apresentacao.php
             class Model_Apresentacao extends ORM{
  MODEL            public function seleciona($assunto_id){
                      return $this->where(‘assunto_id’,’=‘’,$assunto_id)->find_all();
                   }
             }

             controller – application/classes/controller/apresentacao
             class Controller_Apresentacao extends Controller{
                   public function action_index($assunto_id){
                         $apresentacao              = new Model_Apresentacao();
CONTROLLER               $dados                     = $apresentacao->seleciona($assunto_id);
                         $this->request->response = View::Factory(‘apresentacao/index’)
                                         ->bind(‘dados’,$dados)
                                         ->render();
                   }
             }

             view – application/views/apresentacao/index
             <html>
   VIEW           <?php foreach($dados as $d){ ?>
                       <p>Palestra <?php $d->nome ?> foi um sucesso, PHPPinga liberado!</p>
                  <?php } ?>
             </html>
Simples não? É Kohana!
  E é por isso que eu gosto :)



       http://kohanaframework.org

http://groups.google.com/group/kohana-php
Perguntas?
Marcelo Rodrigo

mrodrigow@gmail.com
 marcelorodrigo.com
  @marcelorodrigo
Desenvolvimento ágil com Kohana framework

Desenvolvimento ágil com Kohana framework

  • 1.
    Desenvolvimento Ágil com Kohana Framework Marcelo Rodrigo Wiebbelling marcelorodrigo.com @marcelorodrigo
  • 2.
    Quem?  Tecnólogo emGestão de TI pela UNISUL  Desenvolvedor PHP desde 1999  Usa Kohana desde 2008  Atua na área de desenvolvimento de aplicações web e integração entre vários sistemas usando tecnologias web
  • 3.
  • 5.
    MVC view controller model
  • 6.
    Porque usar frameworks? Implementam MVC (Model, View, Controller) para separar lógica, conteúdo e roteamento  Implementam padrões e infraestrutura básica  DRY - Reuso de código  Soluções simples para problemas rotineiros  Bibliotecas e Helpers para facilitar sua vida
  • 7.
    Kohana?  Configuração próxima a Zero, usando convenções  UTF-8 e i18n  PDO (mySQL, PGSQL, Oracle, Informix, SQLite, MSSQL, Firebird, ODBC)  Licença BSD (copiar, distribuir, adaptar)  Strict PHP 5 (5.2.3 e mais recentes)  ORM  Cache (memcache, sqlite, eaccelerator, filesystem)  Segurança (cross-site scripting (XSS), validation/filter)  Bibliotecas (Validation, Session, Cookies, Crypt, Cache, Benchmarking, Pagination, etc)  Helpers (form, upload, image, html, url, text, date, etc)
  • 8.
    Porque não Zend Framework,Symfony, CakePHP, YII, Spaghetti , * CodeIgniter? * Pare de pensar em comida!
  • 9.
  • 10.
    Todos tem seuvalor, mas ...
  • 11.
    Porque usar oKohana?  Você precisa desenvolver aplicações rapidamente.  Você precisa de um framework rápido e leve.  Você precisa de um framework que não precise de muita configuração e que seja compatível com sua hospedagem.  Você quer ter controle sobre o que o framework está fazendo pra você.  Você prefere escrever seu próprio código, em vez de usar um que foi gerado automaticamente pra você.
  • 12.
    Mas, porque Kohana?  Baixe descompacte e use. Sem paranóias com bootstrap, arquivos config, XML, etc  Curva de Aprendizado rápida  ORM poderoso com Active Record  É muito rápido, e muito leve  Kohana é um fork do CodeIgniter, 100% em PHP 5  Permite usar bibliotecas do Zend Framework  Kohana + Zend Framework = Killer Combo
  • 13.
  • 14.
    Instalando  Download em http://kohanaframework.org/download/kohana-latest  Descompactar kohana-3.0.7.zip (versão atual stable)  http://127.0.0.1/kohana/
  • 16.
    Model application/classes/model/apresentacao.php class Model_Apresentacao extendsORM{ public function seleciona($assunto_id){ return $this->where(‘assunto_id’,’=‘,$assunto_id)->find_all(); } }
  • 17.
    Nunca foi tãofácil obter dados  where($campo, $operador, $valor)  andwhere ($campo, $operador, $valor)  orwhere($campo, $operador, $valor)  order_by($campo, $direcao)  having(...)  join(...)  groupby(...) Em resumo: cobertura da maioria dos operadores SQL necessários no dia-a-dia do desenvolvedor
  • 18.
    Nunca foi tãofácil manipular dados $apresentacao = new Model_Apresentacao(); $dados = $apresentacao->find(84); $dados->nome = ‘Desenvolvimento ágil com Kohana Framework’; $dados->evento = ‘PHPSCConf 2010’; $dados->save();
  • 19.
    Mamãe, gosto deescrever SQL! DB::Query(‘SELECT * FROM tabela ORDER BY nome’); DB::Query(‘UPDATE tabela SET ...’); DB::Query(‘INSERT INTO tabela ..’); DB::Query(‘DELETE FROM tabela WHERE ...’);
  • 20.
    Controller application/classes/controller/apresentacao.php class Controller_Apresentacao extendsController{ public function action_index($assunto_id){ $apresentacao = new Model_Apresentacao(); $dados = $apresentacao->seleciona($assunto_id); $this->request->response = View::Factory(‘apresentacao/index’) ->bind(‘dados’,$dados) ->render(); } }
  • 21.
    View application/views/apresentacao/index.php <html> <body> <?php foreach($dados as $d){ ?> <p>Palestra <?php $d->nome ?> foi um sucesso, PHPPinga liberado!</p> <?php } ?> </body> </html>
  • 22.
    model - application/classes/model/apresentacao.php class Model_Apresentacao extends ORM{ MODEL public function seleciona($assunto_id){ return $this->where(‘assunto_id’,’=‘’,$assunto_id)->find_all(); } } controller – application/classes/controller/apresentacao class Controller_Apresentacao extends Controller{ public function action_index($assunto_id){ $apresentacao = new Model_Apresentacao(); CONTROLLER $dados = $apresentacao->seleciona($assunto_id); $this->request->response = View::Factory(‘apresentacao/index’) ->bind(‘dados’,$dados) ->render(); } } view – application/views/apresentacao/index <html> VIEW <?php foreach($dados as $d){ ?> <p>Palestra <?php $d->nome ?> foi um sucesso, PHPPinga liberado!</p> <?php } ?> </html>
  • 23.
    Simples não? ÉKohana! E é por isso que eu gosto :) http://kohanaframework.org http://groups.google.com/group/kohana-php
  • 24.
  • 25.