Zend Framework PHPSC Conf Maio/2009 adlermedrado.com.br
O que será abordado Apresentação Frameworks O que são ? Zend Framework O que é ? Quem usa ? Por que usar ? Alguns componentes Como usar ? Como colaborar ? Quais as perspectivas futuras ? Como se certificar ? Perguntas adlermedrado.com.br
Quem ? Analista de sistemas, programador, responsável técnico SIGMA Dataserv S/A Membro da equipe de coordenação do PHPDF Instrutor de cursos de PHP Zend Certified Engineer – PHP 5 Zend Certified Engineer – Zend Framework adlermedrado.com.br
Frameworks – O que são ? adlermedrado.com.br Uma base que provém a infra-estrutura básica necessária para  desenvolver software.  Determina padrões de desenvolvimento Permite que haja reaproveitamento de código Automatização de tarefas Biblioteca de classes Soluções para problemas comuns já estão implementadas http://www.reporterbrasil.org.br/brinquedos/images/brinc-montar.jpg
Zend Framework – O que é ? adlermedrado.com.br Framework open-source para desenvolvimento com PHP 5 Mantido pela Zend Technologies Inc. Crescente comunidade de desenvolvedores Crescente comunidade de usuários Certificação de profissionais Extensa documentação Licença new BSD Suporte comercial da Zend Versão atual 1.8.2
Zend Framework – O que é ? adlermedrado.com.br Participaram do projeto
Zend Framework – Quem usa? adlermedrado.com.br
Zend Framework – Por que usar? adlermedrado.com.br Orientado a Objetos  Implementa a maioria dos padrões de projeto (design patterns) em seus componentes Amplamente testados com testes unitários (PHPUnit) Robusto, Simples, Extensível e Produtivo Baseado em componentes Baixo acoplamento entre os componentes Fácil de colocar para funcionar Integração com outros projetos (smarty, doctrine, jquery, dojo, etc) Webservices prontos para serviços do Yahoo!, Google e outros. Zend_Search_Lucene – Indexação de documentos baseado no projeto Apache Lucene.
adlermedrado.com.br SE VOCÊ AINDA PROGRAMA CÓDIGO  ESPAGUETTI, SAIBA QUE ESTÁ NA HORA  DE MUDAR.  SABE PORQUE?
Zend Framework – Por que usar? adlermedrado.com.br As eras da programação espaguetti e dos frameworks caseiros chegaram ao fim no mundo PHP !!!
Zend Framework – Alguns componentes adlermedrado.com.br
Zend Framework – Como usar? adlermedrado.com.br Primeiramente, habilitamos o mod_rewrite no Apache ou a extensão url_rewriter no IIS para utilizarmos o recurso de “urls amigáveis”. Depois, criamos a estrutura de diretórios: Estrutura gerada com o Zend_Tool
Zend Framework – Como usar? adlermedrado.com.br Vamos então criar um bootstrapper:  (comentários foram poupados para economizar espaço) index.php: <?php setlocale(LC_ALL,  'pt_BR' ); date_default_timezone_set( 'America/Sao_Paulo' ); include_once  'application/constants/Constants.php' ; set_include_path(  '.'  . PATH_SEPARATOR . Constants::ROOT_DIR .  '/application/lib/' . PATH_SEPARATOR . Constants::ROOT_DIR .  '/application/views/forms' . PATH_SEPARATOR . Constants::ROOT_DIR .  '/application/models/' . PATH_SEPARATOR . get_include_path()); include_once  'Zend/Loader/Autoloader.php' ; $autoloader  = Zend_Loader_Autoloader::getInstance(); $autoloader ->setFallbackAutoloader( true ); try  { $banco  =  new  Zend_Config_Ini(Constants::ROOT_DIR .  '\application\conf\application.ini' ,  'devel' ); $registry  = Zend_Registry::getInstance(); $registry ->set(  'banco' ,  $banco  ) ; $db  = Zend_Db::factory (  $banco ->db->adapter,  $banco ->db->config->toArray() ) ; Zend_Db_Table::setDefaultAdapter (  $db  ) ; $registry ->set(  'db' ,  $db  ) ; Zend_Layout::startMvc( array ( 'layoutPath'  =>  './application/views/layouts' )); $frontController  = Zend_Controller_Front::getInstance(); $frontController ->throwExceptions( true ); $frontController ->setControllerDirectory( Constants::ROOT_DIR .  '/application/controllers'  ); $frontController ->dispatch(); }  catch  (Exception  $e ) { echo $e->getMessage(); }
Zend Framework – Como usar? adlermedrado.com.br Vamos preparar nosso ÚNICO arquivo de configuração application.ini: [devel] db.adapter  = PDO_MYSQL db.config.host  = 127.0.0.1 db.config.username = root db.config.password =  db.config.dbname  = meu_sistema [homologacao] db.adapter  = PDO_MYSQL db.config.host  = 127.0.0.2 db.config.username = root db.config.password =  db.config.dbname  = meu_sistema [producao] db.adapter  = PDO_MYSQL db.config.host  = 127.0.0.3 db.config.username = root db.config.password =  db.config.dbname  = meu_sistema
Zend Framework – Como usar? adlermedrado.com.br Vamos criar um objeto de formulário Zend_Form <?php class  UsuarioForm  extends  Zend_Form { public function  __construct( $options  = null) { parent ::__construct( $options ); $this ->generate(); } public function  generate() { $this ->setName( 'usuarioform' ); $id  =  new  Zend_Form_Element_Hidden( 'id' ); $nomeCompleto  =  new  Zend_Form_Element_Text( 'nome_completo' ); $nomeCompleto ->setLabel( 'Nome Completo:' )->setRequired( true )->addFilter( 'StripTags' )->addFilter( 'StringTrim' ) ->addValidator( 'NotEmpty' )->setAttrib( 'size' ,  '60' )->setAttrib( 'maxlength' , '80' );   $username  =  new  Zend_Form_Element_Text( 'username' );   $username ->setLabel( 'Username:' )->setRequired( true )->addFilter( 'StripTags' )->addFilter( 'StringTrim' )   ->addValidator( 'NotEmpty' )->setAttrib( 'size' ,  '45' )->setAttrib( 'maxlength' , '45' );   $senha  =  new  Zend_Form_Element_Password( 'senha' );   $senha ->setLabel( 'Senha:' )->setRequired( true )->addFilter( 'StripTags' )->addFilter( 'StringTrim' )   ->addValidator( 'NotEmpty' )->setAttrib( 'size' ,  '45' )->setAttrib( 'maxlength' , '45' );   $email  =  new  Zend_Form_Element_Text( 'email' );   $email ->setLabel( 'Email:' )->setRequired( true )->addFilter( 'StripTags' )->addFilter( 'StringTrim' )   ->addValidator( 'NotEmpty' )->setAttrib( 'size' ,  '45' )->setAttrib( 'maxlength' , '45' );   $submit  =  new  Zend_Form_Element_Button( 'submit' );   $this ->addElements( array ( $id ,  $nomeCompleto ,  $username ,  $senha ,  $email ,  $submit )); } }
Zend Framework – Como usar? adlermedrado.com.br Vamos criar as classes que compõem o MVC Primeiro o Controller  (Somente com o método de inclusão para poupar espaço) UsuarioController.php <?php class  UsuarioController  extends  Zend_Controller_Action { private  $usuario ; public function  init() { $this ->usuario =  new  Usuario(); } public function  novoAction() { $form  =  new  UsuarioForm(); $this ->view->form =  $form ; if  ( $this ->_request->isPost()) { $formData  =  $this ->_request->getPost(); if  ( $form ->isValid( $formData )) { unset ( $formData [ 'id' ]); unset ( $formData [ 'submit' ]); $formData [ 'senha' ] = md5( $formData [ 'senha' ]); if  ( $this ->usuario->insert( $formData ) !==  false ) { $this->view->mensagem = “Dados inseridos com sucesso”; }  else  { $this->view->mensagem = “Erros ao inserir”; } }  else  { $form ->populate( $formData ); } } } }
Zend Framework – Como usar? adlermedrado.com.br Vamos criar as classes que compõem o MVC Agora a view index.phtml: < html > < header ></ header > < body > <?php echo  $this ->form; ?> </ body > </ html >
Zend Framework – Como usar? adlermedrado.com.br Vamos criar as classes que compõem o MVC E agora a model Usuario.php: <?php class  Usuario  extends  Zend_Db_Table_Abstract { }
Zend Framework – Como usar? adlermedrado.com.br AGORA VAMOS VER ISSO RODANDO
Zend Framework – Como usar? adlermedrado.com.br SIMPLES NÉ? QUER VER ZEND_LAYOUT, RELACIONAMENTO ENTRE TABELAS  ,INTEGRAÇÃO COM JQUERY e INTEGRAÇÃO COM FIREPHP? PARTICIPE DO MINICURSO.
Zend Framework – Como colaborar? adlermedrado.com.br Assinar um CLA – Contributor License Agreement Criar código dentro dos padrões de codificação do ZF
Zend Framework – Quais as perspectivas futuras adlermedrado.com.br Zend_Asterisk Zend_DataGrid Zend_Chart Zend_Form Generation from Model Zend_Jabber Zend_ICal Zend_Crypt e Zend_Crypt_Rsa Zend_BitTorrent Zend_Filter_Compress Zend_Microformat ZendX_Doctrine Entre outros...
Zend Framework – Como se certificar adlermedrado.com.br http://www.zend.com/en/services/certification/framework/ Valor do voucher: $160 Baseado no Zend Framework 1.5.0 MVC, Forms, Database, Authentication and Access, Filtering and Validation, Web Services, Infrastructure, Search, Mail,  Security Internationalization, Coding Standards, Performance, Diagnosis and Maintainability ZF Certification Study Guide -> gratuito Marque a data do exame na PearsonVue:  www.pearsonvue.com Vá um centro autorizado PearsonVue na data marcada Prova 100% online (via computador). Há cameras monitorando Resultado na hora Seu nome aparece na Yellow Pages
Zend Framework – Como se certificar adlermedrado.com.br
Zend Framework – Como se certificar adlermedrado.com.br O mercado valoriza SIM a certificação Conta pontos em licitações, ou seja, as empresas valorizam o profissional certificado Eu ganho bonus mensais no salário por cada certificação que tenho RESUMINDO: VALE A PENA
Zend Framework – Perguntas adlermedrado.com.br
Valeu, até mais... adlermedrado.com.br <?php $card = array( ‘ nome’  =>   ‘Adler Brediks Medrado’, ‘ site’  =>   ‘http://www.adlermedrado.com.br’, ‘ e-mail’ =>   ‘adler@adlermedrado.com.br’, ‘ fone’  =>   ‘(61) 8145 0199’ ); var_dump($card); ?> Idéia roubada descaradamente dos slides do Elton Minetto - www.eltonminetto.net

Zend Framework

  • 1.
    Zend Framework PHPSCConf Maio/2009 adlermedrado.com.br
  • 2.
    O que seráabordado Apresentação Frameworks O que são ? Zend Framework O que é ? Quem usa ? Por que usar ? Alguns componentes Como usar ? Como colaborar ? Quais as perspectivas futuras ? Como se certificar ? Perguntas adlermedrado.com.br
  • 3.
    Quem ? Analistade sistemas, programador, responsável técnico SIGMA Dataserv S/A Membro da equipe de coordenação do PHPDF Instrutor de cursos de PHP Zend Certified Engineer – PHP 5 Zend Certified Engineer – Zend Framework adlermedrado.com.br
  • 4.
    Frameworks – Oque são ? adlermedrado.com.br Uma base que provém a infra-estrutura básica necessária para desenvolver software. Determina padrões de desenvolvimento Permite que haja reaproveitamento de código Automatização de tarefas Biblioteca de classes Soluções para problemas comuns já estão implementadas http://www.reporterbrasil.org.br/brinquedos/images/brinc-montar.jpg
  • 5.
    Zend Framework –O que é ? adlermedrado.com.br Framework open-source para desenvolvimento com PHP 5 Mantido pela Zend Technologies Inc. Crescente comunidade de desenvolvedores Crescente comunidade de usuários Certificação de profissionais Extensa documentação Licença new BSD Suporte comercial da Zend Versão atual 1.8.2
  • 6.
    Zend Framework –O que é ? adlermedrado.com.br Participaram do projeto
  • 7.
    Zend Framework –Quem usa? adlermedrado.com.br
  • 8.
    Zend Framework –Por que usar? adlermedrado.com.br Orientado a Objetos Implementa a maioria dos padrões de projeto (design patterns) em seus componentes Amplamente testados com testes unitários (PHPUnit) Robusto, Simples, Extensível e Produtivo Baseado em componentes Baixo acoplamento entre os componentes Fácil de colocar para funcionar Integração com outros projetos (smarty, doctrine, jquery, dojo, etc) Webservices prontos para serviços do Yahoo!, Google e outros. Zend_Search_Lucene – Indexação de documentos baseado no projeto Apache Lucene.
  • 9.
    adlermedrado.com.br SE VOCÊAINDA PROGRAMA CÓDIGO ESPAGUETTI, SAIBA QUE ESTÁ NA HORA DE MUDAR. SABE PORQUE?
  • 10.
    Zend Framework –Por que usar? adlermedrado.com.br As eras da programação espaguetti e dos frameworks caseiros chegaram ao fim no mundo PHP !!!
  • 11.
    Zend Framework –Alguns componentes adlermedrado.com.br
  • 12.
    Zend Framework –Como usar? adlermedrado.com.br Primeiramente, habilitamos o mod_rewrite no Apache ou a extensão url_rewriter no IIS para utilizarmos o recurso de “urls amigáveis”. Depois, criamos a estrutura de diretórios: Estrutura gerada com o Zend_Tool
  • 13.
    Zend Framework –Como usar? adlermedrado.com.br Vamos então criar um bootstrapper: (comentários foram poupados para economizar espaço) index.php: <?php setlocale(LC_ALL, 'pt_BR' ); date_default_timezone_set( 'America/Sao_Paulo' ); include_once 'application/constants/Constants.php' ; set_include_path( '.' . PATH_SEPARATOR . Constants::ROOT_DIR . '/application/lib/' . PATH_SEPARATOR . Constants::ROOT_DIR . '/application/views/forms' . PATH_SEPARATOR . Constants::ROOT_DIR . '/application/models/' . PATH_SEPARATOR . get_include_path()); include_once 'Zend/Loader/Autoloader.php' ; $autoloader = Zend_Loader_Autoloader::getInstance(); $autoloader ->setFallbackAutoloader( true ); try { $banco = new Zend_Config_Ini(Constants::ROOT_DIR . '\application\conf\application.ini' , 'devel' ); $registry = Zend_Registry::getInstance(); $registry ->set( 'banco' , $banco ) ; $db = Zend_Db::factory ( $banco ->db->adapter, $banco ->db->config->toArray() ) ; Zend_Db_Table::setDefaultAdapter ( $db ) ; $registry ->set( 'db' , $db ) ; Zend_Layout::startMvc( array ( 'layoutPath' => './application/views/layouts' )); $frontController = Zend_Controller_Front::getInstance(); $frontController ->throwExceptions( true ); $frontController ->setControllerDirectory( Constants::ROOT_DIR . '/application/controllers' ); $frontController ->dispatch(); } catch (Exception $e ) { echo $e->getMessage(); }
  • 14.
    Zend Framework –Como usar? adlermedrado.com.br Vamos preparar nosso ÚNICO arquivo de configuração application.ini: [devel] db.adapter = PDO_MYSQL db.config.host = 127.0.0.1 db.config.username = root db.config.password = db.config.dbname = meu_sistema [homologacao] db.adapter = PDO_MYSQL db.config.host = 127.0.0.2 db.config.username = root db.config.password = db.config.dbname = meu_sistema [producao] db.adapter = PDO_MYSQL db.config.host = 127.0.0.3 db.config.username = root db.config.password = db.config.dbname = meu_sistema
  • 15.
    Zend Framework –Como usar? adlermedrado.com.br Vamos criar um objeto de formulário Zend_Form <?php class UsuarioForm extends Zend_Form { public function __construct( $options = null) { parent ::__construct( $options ); $this ->generate(); } public function generate() { $this ->setName( 'usuarioform' ); $id = new Zend_Form_Element_Hidden( 'id' ); $nomeCompleto = new Zend_Form_Element_Text( 'nome_completo' ); $nomeCompleto ->setLabel( 'Nome Completo:' )->setRequired( true )->addFilter( 'StripTags' )->addFilter( 'StringTrim' ) ->addValidator( 'NotEmpty' )->setAttrib( 'size' , '60' )->setAttrib( 'maxlength' , '80' ); $username = new Zend_Form_Element_Text( 'username' ); $username ->setLabel( 'Username:' )->setRequired( true )->addFilter( 'StripTags' )->addFilter( 'StringTrim' ) ->addValidator( 'NotEmpty' )->setAttrib( 'size' , '45' )->setAttrib( 'maxlength' , '45' ); $senha = new Zend_Form_Element_Password( 'senha' ); $senha ->setLabel( 'Senha:' )->setRequired( true )->addFilter( 'StripTags' )->addFilter( 'StringTrim' ) ->addValidator( 'NotEmpty' )->setAttrib( 'size' , '45' )->setAttrib( 'maxlength' , '45' ); $email = new Zend_Form_Element_Text( 'email' ); $email ->setLabel( 'Email:' )->setRequired( true )->addFilter( 'StripTags' )->addFilter( 'StringTrim' ) ->addValidator( 'NotEmpty' )->setAttrib( 'size' , '45' )->setAttrib( 'maxlength' , '45' ); $submit = new Zend_Form_Element_Button( 'submit' ); $this ->addElements( array ( $id , $nomeCompleto , $username , $senha , $email , $submit )); } }
  • 16.
    Zend Framework –Como usar? adlermedrado.com.br Vamos criar as classes que compõem o MVC Primeiro o Controller (Somente com o método de inclusão para poupar espaço) UsuarioController.php <?php class UsuarioController extends Zend_Controller_Action { private $usuario ; public function init() { $this ->usuario = new Usuario(); } public function novoAction() { $form = new UsuarioForm(); $this ->view->form = $form ; if ( $this ->_request->isPost()) { $formData = $this ->_request->getPost(); if ( $form ->isValid( $formData )) { unset ( $formData [ 'id' ]); unset ( $formData [ 'submit' ]); $formData [ 'senha' ] = md5( $formData [ 'senha' ]); if ( $this ->usuario->insert( $formData ) !== false ) { $this->view->mensagem = “Dados inseridos com sucesso”; } else { $this->view->mensagem = “Erros ao inserir”; } } else { $form ->populate( $formData ); } } } }
  • 17.
    Zend Framework –Como usar? adlermedrado.com.br Vamos criar as classes que compõem o MVC Agora a view index.phtml: < html > < header ></ header > < body > <?php echo $this ->form; ?> </ body > </ html >
  • 18.
    Zend Framework –Como usar? adlermedrado.com.br Vamos criar as classes que compõem o MVC E agora a model Usuario.php: <?php class Usuario extends Zend_Db_Table_Abstract { }
  • 19.
    Zend Framework –Como usar? adlermedrado.com.br AGORA VAMOS VER ISSO RODANDO
  • 20.
    Zend Framework –Como usar? adlermedrado.com.br SIMPLES NÉ? QUER VER ZEND_LAYOUT, RELACIONAMENTO ENTRE TABELAS ,INTEGRAÇÃO COM JQUERY e INTEGRAÇÃO COM FIREPHP? PARTICIPE DO MINICURSO.
  • 21.
    Zend Framework –Como colaborar? adlermedrado.com.br Assinar um CLA – Contributor License Agreement Criar código dentro dos padrões de codificação do ZF
  • 22.
    Zend Framework –Quais as perspectivas futuras adlermedrado.com.br Zend_Asterisk Zend_DataGrid Zend_Chart Zend_Form Generation from Model Zend_Jabber Zend_ICal Zend_Crypt e Zend_Crypt_Rsa Zend_BitTorrent Zend_Filter_Compress Zend_Microformat ZendX_Doctrine Entre outros...
  • 23.
    Zend Framework –Como se certificar adlermedrado.com.br http://www.zend.com/en/services/certification/framework/ Valor do voucher: $160 Baseado no Zend Framework 1.5.0 MVC, Forms, Database, Authentication and Access, Filtering and Validation, Web Services, Infrastructure, Search, Mail, Security Internationalization, Coding Standards, Performance, Diagnosis and Maintainability ZF Certification Study Guide -> gratuito Marque a data do exame na PearsonVue: www.pearsonvue.com Vá um centro autorizado PearsonVue na data marcada Prova 100% online (via computador). Há cameras monitorando Resultado na hora Seu nome aparece na Yellow Pages
  • 24.
    Zend Framework –Como se certificar adlermedrado.com.br
  • 25.
    Zend Framework –Como se certificar adlermedrado.com.br O mercado valoriza SIM a certificação Conta pontos em licitações, ou seja, as empresas valorizam o profissional certificado Eu ganho bonus mensais no salário por cada certificação que tenho RESUMINDO: VALE A PENA
  • 26.
    Zend Framework –Perguntas adlermedrado.com.br
  • 27.
    Valeu, até mais...adlermedrado.com.br <?php $card = array( ‘ nome’ => ‘Adler Brediks Medrado’, ‘ site’ => ‘http://www.adlermedrado.com.br’, ‘ e-mail’ => ‘adler@adlermedrado.com.br’, ‘ fone’ => ‘(61) 8145 0199’ ); var_dump($card); ?> Idéia roubada descaradamente dos slides do Elton Minetto - www.eltonminetto.net