Você está na página 1de 36

Zend Framework

Collaboration Project
● Iniciativas de código ● Projetos
aberto – Zend Framework*
● Envolve Zend, sócios – Developer Zone
e comunidade – Eclipse PHP IDE
● Promover a utilização
do PHP
Zend Framework

Framework de código aberto de altíssima


qualidade para construção de aplicações para
internet e Web Services com PHP.
Objetivos
● Fornecer um
ambiente completo
para aplicações
escritas em PHP.
● Tornar o PHP uma
tecnologia padrão de
mercado.
Objetivos
● Envolver a
comunidade e
desenvolvedores.
● Prover componentes
de alta qualidade e
com atualizações
constantes.
Padrões
● Formatação de
arquivos.
● Convenção de
nomes.
● Estilo de codificação.
● Documentação de
código.
Componentes
● Cache
● Configuration
● Controller
● DataBase
● Feed
● Filter
● HTTP Client
● Json
Componentes
● Log
● Mail
● Mime
● PDF
● Search
● Service
● View
● XML RPC
O Caminho das Pedras
● Por onde começar?
● Até onde é possível
chegar?
● Onde estamos?
● Pra onde vamos?
● Será que lá tem
internet?
Arquitetura
Olá Mundo!
● Estrutura de
Diretórios
– Bibliotecas
– Artefatos Públicos
– Aplicação
● Controladoras
● Telas
● Banco de Dados
O Início
● Centralização das
Requisições
– Rewrite Rules
● Inicialização do
sistema.
– Include Path
– Autoload
O Início
.htaccess
RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

index.php
<?php

define( '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');

?>
Controle
● Zend_Controller
– Fornece alicerces
para construção de
sistemas baseados no
padrão MVC.
Controle
● Componentes
– Roteador
– Despachante
– Ações
Controle
IndexController.php
<?php

class IndexController extends Zend_Controller_Action {

public function indexAction() {


}

public function noRouteAction() {


$this->_redirect( '/' );
}

?>

UsuarioController.php
<?php

class UsuarioController extends Zend_Controller_Action {

public function listarAction() {


}

?>
Tela
● Zend_View
– Provê assistentes,
filtros de saída e
escape de variáveis
para construção de
telas.
Tela
● Componentes
– Assistente
– Renderizador
● Sistema de
renderização flexível
e desacoplado.
– Smarty
– Template Power
– Script
Tela
UsuarioController.php
<?php

class 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>
Tela
formulario.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>
Banco de Dados
● Zend_Db
– Construção de
comandos e
mapeamento
automático das
tabelas.
Banco de Dados
● Utiliza o adaptador
PHP Data Object.
● Compatibilidade
– Firebird
– Oracle
– PostgreSQL
– MSSQL
– MySQL
– SQLite
Banco de Dados
● Componentes
– Select
● Construção de
instruções sql
independente do
adaptador utilizado.
– Table
● Manipulação
automatizada dos
dados.
Banco de Dados
UsuarioController.php
<?php

class 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 );

?>
Banco de Dados
UsuarioController.php
<?php

class 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 );

?>
Banco de Dados
Candidato.php
<?php

class Candidato extends Zend_Db_Table {}

?>

UsuarioController.php
<?php

class 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 ) );

?>
Um Pouco Mais de Tempero
Service Amazon
ExemploController.php
<?php

class 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>
Service Flickr
ExemploController.php
<?php

class 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>
Service Yahoo
ExemploController.php
<?php

class 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>
Feed
exemplo.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;

?>
Mail
exemplo.php
<?php

$mail = new Zend_Mail();

$mail->setFrom( 'renedelima@gmail.com', 'Renê de Lima' );

$mail->addTo( 'renandelima@gmail.com', 'Renan de Lima' );

$mail->setSubject( 'saudações' );

$mail->setBodyText( 'Olá enfermeira!' );

$mail->send();

?>
Além do Horizonte
● Arquitetura Orientada
a Serviços
● Web Services
● Rich Interface
Applications
Como participar?
● Revisão e análise
– Comunidade
– Core Team
● Laboratório
● Encubadora
O mundo
● CakePHP
● Phrame
● Prado
Zend Framework

Você também pode gostar