zend framework

36
Zend Framework

Upload: tiago-da-rocha

Post on 04-Jul-2015

605 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Zend Framework

Zend Framework

Page 2: Zend Framework

Collaboration Project● Iniciativas de código

aberto● Envolve Zend, sócios

e comunidade● Promover a utilização

do PHP

● Projetos– Zend Framework*– Developer Zone– Eclipse PHP IDE

Page 3: Zend Framework

Zend Framework

Framework de código aberto de altíssima qualidade para construção de aplicações para

internet e Web Services com PHP.

Page 4: Zend Framework

Objetivos● Fornecer um

ambiente completo para aplicações escritas em PHP.

● Tornar o PHP uma tecnologia padrão de mercado.

Page 5: Zend Framework

Objetivos● Envolver a

comunidade e desenvolvedores.

● Prover componentes de alta qualidade e com atualizações constantes.

Page 6: Zend Framework

Padrões● Formatação de

arquivos.● Convenção de

nomes.● Estilo de codificação.● Documentação de

código.

Page 7: Zend Framework

Componentes● Cache● Configuration● Controller● DataBase● Feed● Filter● HTTP Client● Json

Page 8: Zend Framework

Componentes● Log● Mail● Mime● PDF● Search● Service● View● XML RPC

Page 9: Zend Framework

O Caminho das Pedras● Por onde começar?● Até onde é possível

chegar?● Onde estamos?● Pra onde vamos?● Será que lá tem

internet?

Page 10: Zend Framework

Arquitetura

Page 11: Zend Framework

Olá Mundo!● Estrutura de

Diretórios– Bibliotecas– Artefatos Públicos– Aplicação

● Controladoras● Telas● Banco de Dados

Page 12: Zend Framework

O Início● Centralização das

Requisições– Rewrite Rules

● Inicialização do sistema.– Include Path– Autoload

Page 13: Zend Framework

O Início.htaccessRewriteEngine onRewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

index.php<?phpdefine( 'ZEND_DIR', '/biblioteca/Zend/' );ini_set( 'include_path', ini_get('include_path') . PATH_SEPARATOR . ZEND_DIR);function __autoload( $class ){ // ... Zend::loadClass( $class );}include 'Zend.php';Zend_Controller_Front::run('/aplicacao/controladora');?>

Page 14: Zend Framework

Controle● Zend_Controller

– Fornece alicerces para construção de sistemas baseados no padrão MVC.

Page 15: Zend Framework

Controle● Componentes

– Roteador– Despachante– Ações

Page 16: Zend Framework

ControleIndexController.php<?phpclass IndexController extends Zend_Controller_Action { public function indexAction() { } public function noRouteAction() { $this->_redirect( '/' ); }}?>

UsuarioController.php<?phpclass UsuarioController extends Zend_Controller_Action { public function listarAction() { }}?>

Page 17: Zend Framework

Tela● Zend_View

– Provê assistentes, filtros de saída e escape de variáveis para construção de telas.

Page 18: Zend Framework

Tela● Componentes

– Assistente– Renderizador

● Sistema de renderização flexível e desacoplado.– Smarty– Template Power– Script

Page 19: Zend Framework

TelaUsuarioController.php<?phpclass UsuarioController extends Zend_Controller_Action { public function listarAction() { $tela = new Zend_View(); $tela->usuarios = array(); echo $view->render( 'listar_usuarios.php' ); }}?>

listar_usuarios.php<html> <head> <title>Listar Usuários</title> </head> <body> <ul> <?php foreach( $this->usuarios as $usuario ): ?> <li><?= $usuario->nome ?></li> <?php endforeach; ?> </ul> </body></html>

Page 20: Zend Framework

Telaformulario.php<html> <head> <title>Listar Usuários</title> </head> <body> <form action="/Usuario/Cadastrar" method="get"> <?php $this->formSelect( 'pais', 'BR', null, $this->paises ); ?> </form> </body></html>

resultado:<select name="pais"> <option value="AR">Argentina</option> <option value="BR" selected="selected">Brasil</option> <option value="ES">Espanha</option></select>

Page 21: Zend Framework

Banco de Dados● Zend_Db

– Construção de comandos e mapeamento automático das tabelas.

Page 22: Zend Framework

Banco de Dados● Utiliza o adaptador

PHP Data Object.● Compatibilidade

– Firebird– Oracle– PostgreSQL– MSSQL– MySQL– SQLite

Page 23: Zend Framework

Banco de Dados● Componentes

– Select● Construção de

instruções sql independente do adaptador utilizado.

– Table● Manipulação

automatizada dos dados.

Page 24: Zend Framework

Banco de DadosUsuarioController.php<?phpclass UsuarioController extends Zend_Controller_Action { public function listarAction(){ $params = array ( 'host' => '127.0.0.1', 'username' => 'rene', 'password' => '******', 'dbname' => 'tse' ); $db = Zend_Db::factory( 'pdoMysql', $params ); $select = $db->select(); $select->from( 'candidato', '*' ); $select->where( 'partido = ?', 49 ); $select->order( 'honestidade' ); $select->limit( 10, 20 ); $lista = $db->fetchAll( $select ); }}?>

Page 25: Zend Framework

Banco de DadosUsuarioController.php<?phpclass UsuarioController extends Zend_Controller_Action { public function listarAction(){ $params = array ( 'host' => '127.0.0.1', 'username' => 'marco_aurerio', 'password' => '******', 'dbname' => 'tse' ); $db = Zend_Db::factory( 'pdoMysql', $params ); $select = $db->select(); $select->from( 'candidato', '*' ); $select->where( 'historico <> ?', 'nebuloso' ); $select->order( 'honestidade' ); $select->limit( 10, 20 ); $lista = $db->fetchAll( $select ); }}?>

Page 26: Zend Framework

Banco de DadosCandidato.php<?phpclass Candidato extends Zend_Db_Table {}?>

UsuarioController.php<?phpclass UsuarioController extends Zend_Controller_Action { public function listarAction(){ $params = array ( 'host' => '127.0.0.1', 'username' => 'marco_aurerio', 'password' => '******', 'dbname' => 'tse' ); $db = Zend_Db::factory( 'pdoMysql', $params ); Zend_Db_Table::setDefaultAdapter( $db ); $candidato = new Candidato(); $lista = $candidato->find( array( 49, 3 ) ); }}?>

Page 27: Zend Framework

Um Pouco Mais de Tempero

Page 28: Zend Framework

Service AmazonExemploController.php<?phpclass ExemploController extends Zend_Controller_Action { public function indexAction() { $amazon = new Zend_Service_Amazon( CHAVE ); $lista = $amazon->itemSearch( array( 'SearchIndex' => 'livros', 'Keywords' => 'azeitona' ) ); echo $view->render( 'exemplo.php' ); }}

exemplo.php<html> <head> <title>Listar Resultados</title> </head> <body> <ul> <?php foreach( $this->lista as $item ): ?> <li><?= $item->title ?></li> <?php endforeach; ?> </ul> </body></html>

Page 29: Zend Framework

Service FlickrExemploController.php<?phpclass ExemploController extends Zend_Controller_Action { public function indexAction() { $flickr = new Zend_Service_Flickr( CHAVE ); $lista = $flickr->tagSearch( 'repolho' ); echo $view->render( 'exemplo.php' ); }}

exemplo.php<html> <head> <title>Listar Resultados</title> </head> <body> <ul> <?php foreach( $this->lista as $item ): ?> <li><?= $item->title ?></li> <?php endforeach; ?> </ul> </body></html>

Page 30: Zend Framework

Service YahooExemploController.php<?phpclass ExemploController extends Zend_Controller_Action { public function indexAction() { $yahoo = new Zend_Service_Yahoo( CHAVE ); $lista = $yahoo->webSearch( 'tomate' ); echo $view->render( 'exemplo.php' ); }}

exemplo.php<html> <head> <title>Listar Resultados</title> </head> <body> <ul> <?php foreach( $this->lista as $item ): ?> <li><?= $item->title ?></li> <?php endforeach; ?> </ul> </body></html>

Page 31: Zend Framework

Feedexemplo.php<?php

try { $slashdot = Zend_Feed::import('http://rss.slashdot.org/'); foreach ( $slashdot as $item ) { echo $item->title(); echo $item->link(); echo $item->description(); }} catch ( Zend_Feed_Exception $exception ) { echo $exception->getMessage(); exit;}?>

Page 32: Zend Framework

Mailexemplo.php<?php $mail = new Zend_Mail(); $mail->setFrom( '[email protected]', 'Renê de Lima' ); $mail->addTo( '[email protected]', 'Renan de Lima' ); $mail->setSubject( 'saudações' ); $mail->setBodyText( 'Olá enfermeira!' ); $mail->send();?>

Page 33: Zend Framework

Além do Horizonte● Arquitetura Orientada

a Serviços● Web Services● Rich Interface

Applications

Page 34: Zend Framework

Como participar?● Revisão e análise

– Comunidade– Core Team

● Laboratório● Encubadora

Page 35: Zend Framework

O mundo● CakePHP● Phrame● Prado

Page 36: Zend Framework

Zend Framework