SlideShare uma empresa Scribd logo
Globalcode – Open4educationwww.fgsl.eti.br É livre a reprodução, desde que citada a fonte. @fgsl
Trilha – Web
Flávio Gomes da Silva Lisboa
Pense no Futuro: com
Globalcode – Open4education
Agenda
PHP: Vale a pena investir?
O Sobrinho
PHP Profissional
Framework
Zend Framework
Globalcode – Open4education
PHP: Vale a pena investir?
PHP é multiplataforma.
PHP é compatível com quase todos os servidores usados
hoje, como Apache.
PHP é fácil de aprender e roda de forma eficiente no lado
servidor.
PHP provê muitas extensões para tarefas de
programação particulares.
Globalcode – Open4education
Calculado em 26 de outubro de 2010. Fonte: http://trends.builtwith.com/framework/PHP
PHP: Vale a pena investir?
Globalcode – Open4education
PHP: Vale a pena investir?
Calculado em 26 de outubro de 2010. Fonte: http://trends.builtwith.com/framework/PHP
Globalcode – Open4education
desenhosanimadosclube.co
m blogdoxandro.blogspot.co
m
As quatro linguagens de programação mais
populares do mundo:
1 – Java
2 – C
3 – C ++
4 – PHP
PHP: Vale a pena investir?
Globalcode – Open4education
PHP: Vale a pena investir?
Globalcode – Open4education
PHP facilita o reuso
PHP 5 possui suporte completo a orientação a objetos.
A versão 5.3 possui ainda mais facilidades.
PHP é concisa, direta e objetiva.
PHP possui estruturas que permitem generalizar o
código, evitando a repetição desnecessária de comandos
que fazem a mesma coisa em situações diferentes.
Globalcode – Open4education
PHP trata a imprevisibilidade
Independente da classe a ser usada:
$object = new $class();
Independente do método a ser executado:
$result = $object->$method();
Globalcode – Open4education
PHP generaliza o código
Métodos dinâmicos:
public function __call($method,$arguments)
$object = new $class();
Leitura, gravação e criação dinâmica de atributos:
public function __get($attribute)
public function __set($attribute,$value)
Globalcode – Open4education
Huey, Dewey, Louis and Donal Duck by Walt Disney
Único problema real do PHP
Globalcode – Open4education
O Sobrinho
Globalcode – Open4education
O Sobrinho
Globalcode – Open4education
O Sobrinho
Globalcode – Open4education
O Sobrinho
Globalcode – Open4education
☻Ciclo de Projeto e Desenvolvimento
►Padrões
►Segurança
►Foco na fácil manutenção
►Funcionalidades reusáveis (não apenas copiar e colar)
►Procedimentos que garantem qualidade
☻Distribuição
►Necessidade de ferramentas que ajudem a suportar a aplicação no
ambiente real
►Performence previsível e consistente.
oglobo.globo.com
PHP Profissional
Globalcode – Open4education
☻Projeto modular
►Evita a complexidade que advém com o crescimento
☻Melhores práticas
►Você absorve as práticas e bons hábitos dos criadores do framework
☻Componentes
►Mantém você com novas tecnologias
carpediem-
lica.blogspot.com
Para que um framework?
Globalcode – Open4education
☻Nenhum framework é completo
►Nenhum software é completo
☻Frameworks devem ser mínimos
►Fuja de soluções completas e definitivas
☻Como eu integro o framework X dentro do framework que eu escolhi
►Se ele não for fracamente acoplado, você não integra!
school.discoveryeducation.com
Qual framework?
Globalcode – Open4education
☻Um ponto de partida para aplicações PHP, que provê:
►Características de segurança;
►Projeto modular
☻Uma coleção de mais de 70 componentes PHP para simplificar tarefas comuns, incluindo
alguns para:
►Criação (e reuso) de formulários
►Logging
►Acesso a banco de dados
☻Uma demonstração das melhores práticas de PHP 5
☻Provê padrões e grande funcionalidade mas não cria dificuldades para seu estilo de
programação. Seu desenvolvimento não é limitado de forma alguma.
Zend Framework
Globalcode – Open4education
☻Criação da estrutura e componentes de um projeto PHP OO MVC
►Ferramenta para linha de comando
►Pode ser integrado com uma IDE, como Eclipse
Zend_Tool
Globalcode – Open4education
☻Modelo
Classes reusáveis que acessam dados e regras de negócio
Mantém SQL e detalhes da aplicação em um só lugar
☻Visão
Templates contendo HTML ou outra saída, com poucos trechos de PHP
Coloca seu HTML em uma “visão” sem preocupação em sobrescrever o código PHP
principal – e ajuda web designers a trabalharem com programadores de regras de
negócio
☻Controlador (controlador de página)
Fluxo da aplicação
Conecta modelo e visão
Não confunda com “controlador frontal”, que apenas inicializa o MVC
enciclopedia.com.pt
bignadaquasar.wordpress.com
oglobo.globo.co
m
MVC
Globalcode – Open4education
Do Controlador Frontal para
o Controlador de Página
Globalcode – Open4education
Controlador Frontal roteia
URLs amigáveis
Convenção de roteamento padrão:
http://exemplo.com.br/controller/action/param1/value1...
controller
mapeia para o
nome da classe
action mapeia
para o nome do
método
Pares param/value
são passados para
a ação
Front
Controller
Controller1
action1()
action2()
Controller2
action1()
action2()
Bootstrap:
index.php
HTTP
request
Globalcode – Open4education
index.php:
passagem obrigatória
Todas as requisições passam por index.php no
doc root. Este é o único diretório público.
index.php inicializa a aplicação e instancia o
Zend_Controller_Front.
O roteamento depende do módulo mod_rewrite
estar disponível. A regra de reescrita pode ser
definida no arquivo httpd.conf (ou em outro .conf )
ou por meio de arquivos .htaccess (o que exige
AllowOverride All).
Globalcode – Open4education
Crie um virtual host
Listen 8000
RewriteEngine on
NameVirtualHost 10.11.12.13:8000
<VirtualHost 10.11.12.13:8000>
DocumentRoot /www/myprojects
</VirtualHost>
<Directory /www/myprojects>
# disallow .htaccess, so webserver won’t search for them
AllowOverride None
# funnel all requests to index.php
# except requests for static resources
RewriteEngine On
RewriteRule !.(js|ico|gif|jpg|png|css|html)$ index.php
</Directory>
Globalcode – Open4education
Ou use arquivos .htaccess
Neste caso, o arquivo aponta para o diretório
public.
E é preciso configurar a baseUrl para o
Controlador Frontal
define('BASE_URL',substr($_SERVER['PHP_SELF'],0,strpos($_SERVER['PHP_SELF'] ,
'/public/index.php'))) ;
RewriteEngine On
RewriteRule !.(js|ico|gif|jpg|png|css|html)$ public/index.php
Globalcode – Open4education
index.php
<?php
// caminhos completos evitam perda de tempo na busca por arquivos
$paths = array(
realpath(dirname(__FILE__) . '/../library'),
realpath(dirname(__FILE__) . '/../application'),
realpath(dirname(__FILE__) . '/../application/models'),
'.'
);
set_include_path(implode(PATH_SEPARATOR, $paths));
// Controlador Frontal
$frontController = Zend_Controller_Front::getInstance();
// Despacho da requisição
$frontController->dispatch();
Globalcode – Open4education
Zend_Application
Deixa a configuração e inicialização separadas
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH .
'/configs/application.ini'
);
$application->bootstrap()
->run();
Globalcode – Open4education
Zend_Application
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.params.displayExceptions = 0
resources.frontController.baseUrl = BASE_URL
resources.frontController.plugins.controller = "Fgsl_Plugin_Controller"
resources.layout.layout = "layout"
resources.db.adapter = "pdo_pgsql"
resources.db.params.host = "localhost"
resources.db.params.username = "postgres"
resources.db.params.password = "postgres"
resources.db.params.dbname = "tudodb"
resources.db.isDefaultTableAdapter = true
[staging : production]
[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
Globalcode – Open4education
Zend_Controller_Action
Classes de controle manipulam grupos de requisições
http://exemplo.com/controller/action
Padrão: IndexController
Organiza e agrupa funcionalidades
Uma classe (herdeira de Zend_Controller_Action) para cada controlador
Métodos de ação em cada classe de controle manipulam requisições
http://exemplo.com.br/controller/action
Padrão: indexAction()
Algo como actionAction()
Exemplo: Se action é “edit” então o método é editAction()
Globalcode – Open4education
Zend_Controller_Action
Globalcode – Open4education
Zend_Loader_Autoloader
Na verdade, não é preciso usar require ou
include... pelo menos não mais que uma vez!
No index.php, coloque isto:
require_once 'Zend/Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->registerNamespace('Zend');
Globalcode – Open4education
Zend_View
Scripts (templates)
Templates baseados em scripts PHP para apresentação de dados
Devem conter somente lógica de exibição, não lógica de negócio
Nomeação padrão: “myaction.phtml”
Helpers
Classes e métodos que provêem funcionalidade de visão reutilizável
Exemplos helpers embutidos: escape(), formText(), partial(),
partialLoop(), headTitle()
Escreva os seus também
Layout: Zend_Layout
Globalcode – Open4education
Zend_View
Você pode substituir literais HTML no script de visão
por comandos PHP echo:
<?php echo $this->productNum ?>
ZF provê padrões inteligentes
O view helper $this->escape() usa a função
htmlentities() recomendada pela maioria dos
especialistas em segurança.
Globalcode – Open4education
Faça seu view helper
class Zend_View_Helper_Title_Case {
public $view;
public function titleCase($string = '')
{
return ucwords(strtolower(trim($string)));
} //(public function titleCase())
public function setView(Zend_View_Interface $view) {
$this->view = $view;
}
}
Uso:
echo $this->titleCase(‘mozilla
firefox’);
Globalcode – Open4education
Controlador chama visão...
Globalcode – Open4education
...automaticamente
Globalcode – Open4education
Zend_Layout
Dá a seu site uma aparência consistente enquanto retém a
flexibilidade
Padrão Two-step view
Usa Zend_View para renderização
Marcadores úteis para configurar javascript, títulos e
outros dados variáveis
Globalcode – Open4education
Zend_Layout
Globalcode – Open4education
Zend_... Model?
Classes modelo são representações abstratas de dados
Podem ser estendidas de:
Zend_Db_Table – Para abstração de banco de dados
Ou qualquer outra classe que se encaixe em sua
necessidade
Ou construa suas próprias representações abstratas de
seus dados
Classes modelo podem conter lógica de negócio para
preparar dados complexos para apresentação
Código que seja estranho ao controlador e a visão é um
bom candidato a ficar no modelo.
Globalcode – Open4education
Zend_Form
Cria o HTML para seus formulários de entrada
$form = new Zend_Form();
$form->addElement(‘text’, ‘ordernum‘);
$form->addElement(‘text’, ‘date‘);
Vários modos de imprimir os elementos de formulário
echo $form; // tudo ou
echo $form->ordernum; // só o especificado ou
echo $form->getElement(‘ordernum’);
HTML gerado pelo último echo
<input type=“text” name=“ordernum” id=“ordernum”>
Globalcode – Open4education
Zend_Form
Pode ser integrado com Zend_Filter, para fazer
conversões de dados
Pode ser integrado com Zend_Validate, para fazer
validação de dados.
Pode ser integrado com o Dijit do Dojo Toolkit para
implementar RIA.
Globalcode – Open4education
Zend_Db
Zend_Db pode criar SQL para você
Strings SQL tendem a causar erros e não são curtas
Zend_Db oferece muito mais do que apenas criar SQL
quoting consistente
escaping
prepared statements (substituições para “?”)
profiler
Globalcode – Open4education
Zend_Db
Zend_Db implementa padrões para acesso a dados
Data Table Gateway
Data Row Gateway
Data Mapper
Active Record
Globalcode – Open4education
Muitos componentes...
Globalcode – Open4education
Segurança
Autenticação, Autorização, Filtragem, Validação
bahianoticias.com.b
r
Globalcode – Open4education
Infraestrutura
Registro Global, Sessão, Carregador de classes...
odebrechtonline.com.b
r
Globalcode – Open4education
Performance
Cache, memória...
automaistv.com.b
r
Globalcode – Open4education
Web Services
XML-RPC, SOAP, REST
Globalcode – Open4education
Nuvem
Zend_GData, Zend_Service_Amazon, Zend_Cloud
pela-
positiva.blogspot.com
Globalcode – Open4education
Mais informações
http://framework.zend.com
http://forum.zfbrasil.com
Livros:
Globalcode – Open4education
Mão na Massa
http://www.temporealeventos.com.br/?area=199
Globalcode – Open4education
PHP Conference 2010
www.phpconf.com.br
Globalcode – Open4education
Obrigado
flaviogomesdasilva@yahoo.com.br

Mais conteúdo relacionado

Mais procurados

Construindo APIs RESTful com Spring
Construindo APIs RESTful com SpringConstruindo APIs RESTful com Spring
Construindo APIs RESTful com Spring
Mateus Malaquias
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Framework
elliando dias
 
Entendendo Conceitos Caching com PHP
Entendendo Conceitos Caching com PHPEntendendo Conceitos Caching com PHP
Entendendo Conceitos Caching com PHP
Adler Medrado
 
Conhecendo o Zend Framework
Conhecendo o Zend FrameworkConhecendo o Zend Framework
Conhecendo o Zend Framework
Jaime Neto
 
Certificação Zend Framework
Certificação Zend FrameworkCertificação Zend Framework
Certificação Zend Framework
Jaime Neto
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em python
Paula Grangeiro
 
Boas práticas de django
Boas práticas de djangoBoas práticas de django
Boas práticas de django
Filipe Ximenes
 
Panorama atual do PHP
Panorama atual do PHPPanorama atual do PHP
Panorama atual do PHP
Adler Medrado
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Thiago Sinésio
 
Javascript aula 01 - visão geral
Javascript   aula 01 - visão geralJavascript   aula 01 - visão geral
Javascript aula 01 - visão geral
Cristiano Pires Martins
 
Construindo Sistemas Com Django
Construindo Sistemas Com DjangoConstruindo Sistemas Com Django
Construindo Sistemas Com Django
Marinho Brandão
 
PHPUnit e teste de software
PHPUnit e teste de softwarePHPUnit e teste de software
PHPUnit e teste de software
ricardophp
 
Criando websites a jato com Django
Criando websites a jato com DjangoCriando websites a jato com Django
Criando websites a jato com Django
Marcos Petry
 
Php e mysql aplicacao completa a partir do zero
Php e mysql   aplicacao completa a partir do zeroPhp e mysql   aplicacao completa a partir do zero
Php e mysql aplicacao completa a partir do zero
Fred Ramos
 
Django - Muito além do básico
Django - Muito além do básicoDjango - Muito além do básico
Django - Muito além do básico
Christiano Anderson
 
PHP e componentes reutilizáveis
PHP e componentes reutilizáveisPHP e componentes reutilizáveis
PHP e componentes reutilizáveis
elliando dias
 
HTTP, JSON, REST e AJAX com AngularJS
HTTP, JSON, REST e AJAX com AngularJSHTTP, JSON, REST e AJAX com AngularJS
HTTP, JSON, REST e AJAX com AngularJS
Rodrigo Branas
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks php
Igor Moura
 
Joomla! do desktop ao datacenter
Joomla! do desktop ao datacenterJoomla! do desktop ao datacenter
Joomla! do desktop ao datacenter
Paulino Michelazzo
 
Mini curso de django
Mini curso de djangoMini curso de django
Mini curso de django
rosenclever
 

Mais procurados (20)

Construindo APIs RESTful com Spring
Construindo APIs RESTful com SpringConstruindo APIs RESTful com Spring
Construindo APIs RESTful com Spring
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Framework
 
Entendendo Conceitos Caching com PHP
Entendendo Conceitos Caching com PHPEntendendo Conceitos Caching com PHP
Entendendo Conceitos Caching com PHP
 
Conhecendo o Zend Framework
Conhecendo o Zend FrameworkConhecendo o Zend Framework
Conhecendo o Zend Framework
 
Certificação Zend Framework
Certificação Zend FrameworkCertificação Zend Framework
Certificação Zend Framework
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em python
 
Boas práticas de django
Boas práticas de djangoBoas práticas de django
Boas práticas de django
 
Panorama atual do PHP
Panorama atual do PHPPanorama atual do PHP
Panorama atual do PHP
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
Javascript aula 01 - visão geral
Javascript   aula 01 - visão geralJavascript   aula 01 - visão geral
Javascript aula 01 - visão geral
 
Construindo Sistemas Com Django
Construindo Sistemas Com DjangoConstruindo Sistemas Com Django
Construindo Sistemas Com Django
 
PHPUnit e teste de software
PHPUnit e teste de softwarePHPUnit e teste de software
PHPUnit e teste de software
 
Criando websites a jato com Django
Criando websites a jato com DjangoCriando websites a jato com Django
Criando websites a jato com Django
 
Php e mysql aplicacao completa a partir do zero
Php e mysql   aplicacao completa a partir do zeroPhp e mysql   aplicacao completa a partir do zero
Php e mysql aplicacao completa a partir do zero
 
Django - Muito além do básico
Django - Muito além do básicoDjango - Muito além do básico
Django - Muito além do básico
 
PHP e componentes reutilizáveis
PHP e componentes reutilizáveisPHP e componentes reutilizáveis
PHP e componentes reutilizáveis
 
HTTP, JSON, REST e AJAX com AngularJS
HTTP, JSON, REST e AJAX com AngularJSHTTP, JSON, REST e AJAX com AngularJS
HTTP, JSON, REST e AJAX com AngularJS
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks php
 
Joomla! do desktop ao datacenter
Joomla! do desktop ao datacenterJoomla! do desktop ao datacenter
Joomla! do desktop ao datacenter
 
Mini curso de django
Mini curso de djangoMini curso de django
Mini curso de django
 

Destaque

Boletim maio junho
Boletim maio junhoBoletim maio junho
Boletim maio junho
Professora Josete
 
SessãO5
SessãO5SessãO5
SessãO5
BE/CRE
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011
Flávio Lisboa
 
Savings Mobilization Expansion
Savings Mobilization ExpansionSavings Mobilization Expansion
Savings Mobilization Expansion
MABSIV
 
Core Audio Cranks It Up
Core Audio Cranks It UpCore Audio Cranks It Up
Core Audio Cranks It Up
Chris Adamson
 
Stream Now: Algunas conclusiones
Stream Now: Algunas conclusionesStream Now: Algunas conclusiones
Stream Now: Algunas conclusiones
Ricardo Moreno
 
Trading StocksSemanal20/05/2011
Trading StocksSemanal20/05/2011Trading StocksSemanal20/05/2011
Trading StocksSemanal20/05/2011
BNP Paribas Personal Investors
 
Convenzione di Aarhus
Convenzione di AarhusConvenzione di Aarhus
Convenzione di Aarhus
Massimo De Marchi
 
Mausami Aajar Dr. Shriniwas Kashalikar Dr. Kulkarni & Dr. Shikarkhane
Mausami Aajar Dr. Shriniwas Kashalikar Dr. Kulkarni & Dr. ShikarkhaneMausami Aajar Dr. Shriniwas Kashalikar Dr. Kulkarni & Dr. Shikarkhane
Mausami Aajar Dr. Shriniwas Kashalikar Dr. Kulkarni & Dr. Shikarkhane
drsprasadi
 
Espelho - Uma história de Amor
Espelho - Uma história de AmorEspelho - Uma história de Amor
Espelho - Uma história de Amor
DG1 Divulgue
 
Modelo De Auto Avaliação Das Bibliotecas Escolares Metodologias De Operaci...
Modelo De  Auto Avaliação Das  Bibliotecas  Escolares Metodologias De Operaci...Modelo De  Auto Avaliação Das  Bibliotecas  Escolares Metodologias De Operaci...
Modelo De Auto Avaliação Das Bibliotecas Escolares Metodologias De Operaci...
Celia Ganhao
 
Conversie Optimalisatie - Eddy Boeve - MARCOM11
Conversie Optimalisatie - Eddy Boeve - MARCOM11Conversie Optimalisatie - Eddy Boeve - MARCOM11
Conversie Optimalisatie - Eddy Boeve - MARCOM11
LECTRIC
 
Sviluppo di contenuti Flash Platform su iOS e Android
Sviluppo di contenuti Flash Platform su iOS e AndroidSviluppo di contenuti Flash Platform su iOS e Android
Sviluppo di contenuti Flash Platform su iOS e Android
luca mezzalira
 
Trendsfactory: Verandermanagement... voor marketeers (Paul Blok)
Trendsfactory: Verandermanagement... voor marketeers (Paul Blok)Trendsfactory: Verandermanagement... voor marketeers (Paul Blok)
Trendsfactory: Verandermanagement... voor marketeers (Paul Blok)
LECTRIC
 
Moodboard for unit 66 modelling
Moodboard for unit 66 modellingMoodboard for unit 66 modelling
Moodboard for unit 66 modelling
warburton9191
 
2009 12 Stipo Presentatie Museumsquartier Wien
2009 12 Stipo Presentatie Museumsquartier Wien2009 12 Stipo Presentatie Museumsquartier Wien
2009 12 Stipo Presentatie Museumsquartier Wien
Stipo
 
Pay Per Click - Peter Dendis
Pay Per Click - Peter DendisPay Per Click - Peter Dendis
Pay Per Click - Peter Dendis
Internet je sexy
 
Leiderschap en innovatie - Kees van Kaam - MARCOM11
Leiderschap en innovatie - Kees van Kaam - MARCOM11Leiderschap en innovatie - Kees van Kaam - MARCOM11
Leiderschap en innovatie - Kees van Kaam - MARCOM11
LECTRIC
 

Destaque (20)

Boletim maio junho
Boletim maio junhoBoletim maio junho
Boletim maio junho
 
ANCARES
ANCARESANCARES
ANCARES
 
SessãO5
SessãO5SessãO5
SessãO5
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011
 
Savings Mobilization Expansion
Savings Mobilization ExpansionSavings Mobilization Expansion
Savings Mobilization Expansion
 
Core Audio Cranks It Up
Core Audio Cranks It UpCore Audio Cranks It Up
Core Audio Cranks It Up
 
Stream Now: Algunas conclusiones
Stream Now: Algunas conclusionesStream Now: Algunas conclusiones
Stream Now: Algunas conclusiones
 
Trading StocksSemanal20/05/2011
Trading StocksSemanal20/05/2011Trading StocksSemanal20/05/2011
Trading StocksSemanal20/05/2011
 
Convenzione di Aarhus
Convenzione di AarhusConvenzione di Aarhus
Convenzione di Aarhus
 
Mausami Aajar Dr. Shriniwas Kashalikar Dr. Kulkarni & Dr. Shikarkhane
Mausami Aajar Dr. Shriniwas Kashalikar Dr. Kulkarni & Dr. ShikarkhaneMausami Aajar Dr. Shriniwas Kashalikar Dr. Kulkarni & Dr. Shikarkhane
Mausami Aajar Dr. Shriniwas Kashalikar Dr. Kulkarni & Dr. Shikarkhane
 
Espelho - Uma história de Amor
Espelho - Uma história de AmorEspelho - Uma história de Amor
Espelho - Uma história de Amor
 
Modelo De Auto Avaliação Das Bibliotecas Escolares Metodologias De Operaci...
Modelo De  Auto Avaliação Das  Bibliotecas  Escolares Metodologias De Operaci...Modelo De  Auto Avaliação Das  Bibliotecas  Escolares Metodologias De Operaci...
Modelo De Auto Avaliação Das Bibliotecas Escolares Metodologias De Operaci...
 
Conversie Optimalisatie - Eddy Boeve - MARCOM11
Conversie Optimalisatie - Eddy Boeve - MARCOM11Conversie Optimalisatie - Eddy Boeve - MARCOM11
Conversie Optimalisatie - Eddy Boeve - MARCOM11
 
Sviluppo di contenuti Flash Platform su iOS e Android
Sviluppo di contenuti Flash Platform su iOS e AndroidSviluppo di contenuti Flash Platform su iOS e Android
Sviluppo di contenuti Flash Platform su iOS e Android
 
Trendsfactory: Verandermanagement... voor marketeers (Paul Blok)
Trendsfactory: Verandermanagement... voor marketeers (Paul Blok)Trendsfactory: Verandermanagement... voor marketeers (Paul Blok)
Trendsfactory: Verandermanagement... voor marketeers (Paul Blok)
 
Moodboard for unit 66 modelling
Moodboard for unit 66 modellingMoodboard for unit 66 modelling
Moodboard for unit 66 modelling
 
Bidueiro
BidueiroBidueiro
Bidueiro
 
2009 12 Stipo Presentatie Museumsquartier Wien
2009 12 Stipo Presentatie Museumsquartier Wien2009 12 Stipo Presentatie Museumsquartier Wien
2009 12 Stipo Presentatie Museumsquartier Wien
 
Pay Per Click - Peter Dendis
Pay Per Click - Peter DendisPay Per Click - Peter Dendis
Pay Per Click - Peter Dendis
 
Leiderschap en innovatie - Kees van Kaam - MARCOM11
Leiderschap en innovatie - Kees van Kaam - MARCOM11Leiderschap en innovatie - Kees van Kaam - MARCOM11
Leiderschap en innovatie - Kees van Kaam - MARCOM11
 

Semelhante a Pense no futuro: PHP com Zend Framework

Aplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkAplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend Framework
Flávio Lisboa
 
Cake Php
Cake PhpCake Php
Cake Php
Laura Lopes
 
Arteccom Workshop Magento
Arteccom Workshop MagentoArteccom Workshop Magento
Arteccom Workshop Magento
Thiago Verly
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Thiago Rodrigues
 
Lampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 PalestraLampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 Palestra
David O'Keefe
 
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaTDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
Cleber Dantas
 
CakePHP
CakePHPCakePHP
CakePHP
elliando dias
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Arlindo Santos
 
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
Sergio Lima
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
Luís Cobucci
 
Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011
Luís Cobucci
 
CEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterCEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniter
Eric Silva
 
Depurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSDepurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSS
Thiago Rodrigues
 
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPressFerramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt
 
php4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHPphp4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHP
Ramon Ribeiro Rabello
 
PHP: Como não programar em POG
PHP: Como não programar em POGPHP: Como não programar em POG
PHP: Como não programar em POG
Cicero Joasyo Mateus de Moura
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
Lucas Augusto Carvalho
 
Seguindo padrões: Codificando profissionalmente com PHP Sniffer
Seguindo padrões: Codificando profissionalmente com PHP SnifferSeguindo padrões: Codificando profissionalmente com PHP Sniffer
Seguindo padrões: Codificando profissionalmente com PHP Sniffer
Vinicius Warto Campos
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?
Jaime Neto
 

Semelhante a Pense no futuro: PHP com Zend Framework (20)

Aplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkAplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend Framework
 
Cake Php
Cake PhpCake Php
Cake Php
 
Arteccom Workshop Magento
Arteccom Workshop MagentoArteccom Workshop Magento
Arteccom Workshop Magento
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
 
Lampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 PalestraLampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 Palestra
 
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaTDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
 
CakePHP
CakePHPCakePHP
CakePHP
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
 
Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
Mini Curso de PHP
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011
 
CEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterCEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniter
 
Depurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSDepurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSS
 
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPressFerramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
 
php4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHPphp4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHP
 
PHP: Como não programar em POG
PHP: Como não programar em POGPHP: Como não programar em POG
PHP: Como não programar em POG
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
 
Seguindo padrões: Codificando profissionalmente com PHP Sniffer
Seguindo padrões: Codificando profissionalmente com PHP SnifferSeguindo padrões: Codificando profissionalmente com PHP Sniffer
Seguindo padrões: Codificando profissionalmente com PHP Sniffer
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?
 

Mais de Flávio Lisboa

Criando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHPCriando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHP
Flávio Lisboa
 
Cooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e ArgentinaCooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Flávio Lisboa
 
Aprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com LaminasAprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com Laminas
Flávio Lisboa
 
Ciência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com métodoCiência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com método
Flávio Lisboa
 
Turbinando microsserviços em PHP
Turbinando microsserviços em PHPTurbinando microsserviços em PHP
Turbinando microsserviços em PHP
Flávio Lisboa
 
O que esperar do framework Laminas
O que esperar do framework LaminasO que esperar do framework Laminas
O que esperar do framework Laminas
Flávio Lisboa
 
PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?
Flávio Lisboa
 
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Flávio Lisboa
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHP
Flávio Lisboa
 
Como se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoComo se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundo
Flávio Lisboa
 
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPA demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
Flávio Lisboa
 
Comunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperamComunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperam
Flávio Lisboa
 
Criação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dadosCriação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dados
Flávio Lisboa
 
Amanhecer esmeralda
Amanhecer esmeraldaAmanhecer esmeralda
Amanhecer esmeralda
Flávio Lisboa
 
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de DadosEstudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Flávio Lisboa
 
Arquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviçosArquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviços
Flávio Lisboa
 
Semeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoasSemeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoas
Flávio Lisboa
 
O que é programação de computadores
O que é programação de computadoresO que é programação de computadores
O que é programação de computadores
Flávio Lisboa
 
Economia em rede (comunidade)
Economia em rede (comunidade)Economia em rede (comunidade)
Economia em rede (comunidade)
Flávio Lisboa
 
Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)
Flávio Lisboa
 

Mais de Flávio Lisboa (20)

Criando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHPCriando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHP
 
Cooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e ArgentinaCooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e Argentina
 
Aprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com LaminasAprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com Laminas
 
Ciência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com métodoCiência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com método
 
Turbinando microsserviços em PHP
Turbinando microsserviços em PHPTurbinando microsserviços em PHP
Turbinando microsserviços em PHP
 
O que esperar do framework Laminas
O que esperar do framework LaminasO que esperar do framework Laminas
O que esperar do framework Laminas
 
PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?
 
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHP
 
Como se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoComo se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundo
 
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPA demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
 
Comunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperamComunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperam
 
Criação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dadosCriação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dados
 
Amanhecer esmeralda
Amanhecer esmeraldaAmanhecer esmeralda
Amanhecer esmeralda
 
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de DadosEstudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
 
Arquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviçosArquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviços
 
Semeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoasSemeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoas
 
O que é programação de computadores
O que é programação de computadoresO que é programação de computadores
O que é programação de computadores
 
Economia em rede (comunidade)
Economia em rede (comunidade)Economia em rede (comunidade)
Economia em rede (comunidade)
 
Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)
 

Último

Aula combustiveis mais utilizados na indústria
Aula combustiveis mais utilizados na indústriaAula combustiveis mais utilizados na indústria
Aula combustiveis mais utilizados na indústria
zetec10
 
Subindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWSSubindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWS
Ismael Ash
 
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docxse38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
ronaldos10
 
Apresentação sobre Deep Web e anonimização
Apresentação sobre Deep Web e anonimizaçãoApresentação sobre Deep Web e anonimização
Apresentação sobre Deep Web e anonimização
snerdct
 
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
Faga1939
 
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de   DevOps/CLoudFerramentas que irão te ajudar a entrar no mundo de   DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ismael Ash
 

Último (6)

Aula combustiveis mais utilizados na indústria
Aula combustiveis mais utilizados na indústriaAula combustiveis mais utilizados na indústria
Aula combustiveis mais utilizados na indústria
 
Subindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWSSubindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWS
 
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docxse38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
 
Apresentação sobre Deep Web e anonimização
Apresentação sobre Deep Web e anonimizaçãoApresentação sobre Deep Web e anonimização
Apresentação sobre Deep Web e anonimização
 
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
 
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de   DevOps/CLoudFerramentas que irão te ajudar a entrar no mundo de   DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
 

Pense no futuro: PHP com Zend Framework

  • 1. Globalcode – Open4educationwww.fgsl.eti.br É livre a reprodução, desde que citada a fonte. @fgsl Trilha – Web Flávio Gomes da Silva Lisboa Pense no Futuro: com
  • 2. Globalcode – Open4education Agenda PHP: Vale a pena investir? O Sobrinho PHP Profissional Framework Zend Framework
  • 3. Globalcode – Open4education PHP: Vale a pena investir? PHP é multiplataforma. PHP é compatível com quase todos os servidores usados hoje, como Apache. PHP é fácil de aprender e roda de forma eficiente no lado servidor. PHP provê muitas extensões para tarefas de programação particulares.
  • 4. Globalcode – Open4education Calculado em 26 de outubro de 2010. Fonte: http://trends.builtwith.com/framework/PHP PHP: Vale a pena investir?
  • 5. Globalcode – Open4education PHP: Vale a pena investir? Calculado em 26 de outubro de 2010. Fonte: http://trends.builtwith.com/framework/PHP
  • 6. Globalcode – Open4education desenhosanimadosclube.co m blogdoxandro.blogspot.co m As quatro linguagens de programação mais populares do mundo: 1 – Java 2 – C 3 – C ++ 4 – PHP PHP: Vale a pena investir?
  • 7. Globalcode – Open4education PHP: Vale a pena investir?
  • 8. Globalcode – Open4education PHP facilita o reuso PHP 5 possui suporte completo a orientação a objetos. A versão 5.3 possui ainda mais facilidades. PHP é concisa, direta e objetiva. PHP possui estruturas que permitem generalizar o código, evitando a repetição desnecessária de comandos que fazem a mesma coisa em situações diferentes.
  • 9. Globalcode – Open4education PHP trata a imprevisibilidade Independente da classe a ser usada: $object = new $class(); Independente do método a ser executado: $result = $object->$method();
  • 10. Globalcode – Open4education PHP generaliza o código Métodos dinâmicos: public function __call($method,$arguments) $object = new $class(); Leitura, gravação e criação dinâmica de atributos: public function __get($attribute) public function __set($attribute,$value)
  • 11. Globalcode – Open4education Huey, Dewey, Louis and Donal Duck by Walt Disney Único problema real do PHP
  • 16. Globalcode – Open4education ☻Ciclo de Projeto e Desenvolvimento ►Padrões ►Segurança ►Foco na fácil manutenção ►Funcionalidades reusáveis (não apenas copiar e colar) ►Procedimentos que garantem qualidade ☻Distribuição ►Necessidade de ferramentas que ajudem a suportar a aplicação no ambiente real ►Performence previsível e consistente. oglobo.globo.com PHP Profissional
  • 17. Globalcode – Open4education ☻Projeto modular ►Evita a complexidade que advém com o crescimento ☻Melhores práticas ►Você absorve as práticas e bons hábitos dos criadores do framework ☻Componentes ►Mantém você com novas tecnologias carpediem- lica.blogspot.com Para que um framework?
  • 18. Globalcode – Open4education ☻Nenhum framework é completo ►Nenhum software é completo ☻Frameworks devem ser mínimos ►Fuja de soluções completas e definitivas ☻Como eu integro o framework X dentro do framework que eu escolhi ►Se ele não for fracamente acoplado, você não integra! school.discoveryeducation.com Qual framework?
  • 19. Globalcode – Open4education ☻Um ponto de partida para aplicações PHP, que provê: ►Características de segurança; ►Projeto modular ☻Uma coleção de mais de 70 componentes PHP para simplificar tarefas comuns, incluindo alguns para: ►Criação (e reuso) de formulários ►Logging ►Acesso a banco de dados ☻Uma demonstração das melhores práticas de PHP 5 ☻Provê padrões e grande funcionalidade mas não cria dificuldades para seu estilo de programação. Seu desenvolvimento não é limitado de forma alguma. Zend Framework
  • 20. Globalcode – Open4education ☻Criação da estrutura e componentes de um projeto PHP OO MVC ►Ferramenta para linha de comando ►Pode ser integrado com uma IDE, como Eclipse Zend_Tool
  • 21. Globalcode – Open4education ☻Modelo Classes reusáveis que acessam dados e regras de negócio Mantém SQL e detalhes da aplicação em um só lugar ☻Visão Templates contendo HTML ou outra saída, com poucos trechos de PHP Coloca seu HTML em uma “visão” sem preocupação em sobrescrever o código PHP principal – e ajuda web designers a trabalharem com programadores de regras de negócio ☻Controlador (controlador de página) Fluxo da aplicação Conecta modelo e visão Não confunda com “controlador frontal”, que apenas inicializa o MVC enciclopedia.com.pt bignadaquasar.wordpress.com oglobo.globo.co m MVC
  • 22. Globalcode – Open4education Do Controlador Frontal para o Controlador de Página
  • 23. Globalcode – Open4education Controlador Frontal roteia URLs amigáveis Convenção de roteamento padrão: http://exemplo.com.br/controller/action/param1/value1... controller mapeia para o nome da classe action mapeia para o nome do método Pares param/value são passados para a ação Front Controller Controller1 action1() action2() Controller2 action1() action2() Bootstrap: index.php HTTP request
  • 24. Globalcode – Open4education index.php: passagem obrigatória Todas as requisições passam por index.php no doc root. Este é o único diretório público. index.php inicializa a aplicação e instancia o Zend_Controller_Front. O roteamento depende do módulo mod_rewrite estar disponível. A regra de reescrita pode ser definida no arquivo httpd.conf (ou em outro .conf ) ou por meio de arquivos .htaccess (o que exige AllowOverride All).
  • 25. Globalcode – Open4education Crie um virtual host Listen 8000 RewriteEngine on NameVirtualHost 10.11.12.13:8000 <VirtualHost 10.11.12.13:8000> DocumentRoot /www/myprojects </VirtualHost> <Directory /www/myprojects> # disallow .htaccess, so webserver won’t search for them AllowOverride None # funnel all requests to index.php # except requests for static resources RewriteEngine On RewriteRule !.(js|ico|gif|jpg|png|css|html)$ index.php </Directory>
  • 26. Globalcode – Open4education Ou use arquivos .htaccess Neste caso, o arquivo aponta para o diretório public. E é preciso configurar a baseUrl para o Controlador Frontal define('BASE_URL',substr($_SERVER['PHP_SELF'],0,strpos($_SERVER['PHP_SELF'] , '/public/index.php'))) ; RewriteEngine On RewriteRule !.(js|ico|gif|jpg|png|css|html)$ public/index.php
  • 27. Globalcode – Open4education index.php <?php // caminhos completos evitam perda de tempo na busca por arquivos $paths = array( realpath(dirname(__FILE__) . '/../library'), realpath(dirname(__FILE__) . '/../application'), realpath(dirname(__FILE__) . '/../application/models'), '.' ); set_include_path(implode(PATH_SEPARATOR, $paths)); // Controlador Frontal $frontController = Zend_Controller_Front::getInstance(); // Despacho da requisição $frontController->dispatch();
  • 28. Globalcode – Open4education Zend_Application Deixa a configuração e inicialização separadas $application = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); $application->bootstrap() ->run();
  • 29. Globalcode – Open4education Zend_Application [production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 includePaths.library = APPLICATION_PATH "/../library" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" appnamespace = "Application" resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" resources.frontController.params.displayExceptions = 0 resources.frontController.baseUrl = BASE_URL resources.frontController.plugins.controller = "Fgsl_Plugin_Controller" resources.layout.layout = "layout" resources.db.adapter = "pdo_pgsql" resources.db.params.host = "localhost" resources.db.params.username = "postgres" resources.db.params.password = "postgres" resources.db.params.dbname = "tudodb" resources.db.isDefaultTableAdapter = true [staging : production] [testing : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 resources.frontController.params.displayExceptions = 1
  • 30. Globalcode – Open4education Zend_Controller_Action Classes de controle manipulam grupos de requisições http://exemplo.com/controller/action Padrão: IndexController Organiza e agrupa funcionalidades Uma classe (herdeira de Zend_Controller_Action) para cada controlador Métodos de ação em cada classe de controle manipulam requisições http://exemplo.com.br/controller/action Padrão: indexAction() Algo como actionAction() Exemplo: Se action é “edit” então o método é editAction()
  • 32. Globalcode – Open4education Zend_Loader_Autoloader Na verdade, não é preciso usar require ou include... pelo menos não mais que uma vez! No index.php, coloque isto: require_once 'Zend/Loader/Autoloader.php'; $autoloader = Zend_Loader_Autoloader::getInstance(); $autoloader->registerNamespace('Zend');
  • 33. Globalcode – Open4education Zend_View Scripts (templates) Templates baseados em scripts PHP para apresentação de dados Devem conter somente lógica de exibição, não lógica de negócio Nomeação padrão: “myaction.phtml” Helpers Classes e métodos que provêem funcionalidade de visão reutilizável Exemplos helpers embutidos: escape(), formText(), partial(), partialLoop(), headTitle() Escreva os seus também Layout: Zend_Layout
  • 34. Globalcode – Open4education Zend_View Você pode substituir literais HTML no script de visão por comandos PHP echo: <?php echo $this->productNum ?> ZF provê padrões inteligentes O view helper $this->escape() usa a função htmlentities() recomendada pela maioria dos especialistas em segurança.
  • 35. Globalcode – Open4education Faça seu view helper class Zend_View_Helper_Title_Case { public $view; public function titleCase($string = '') { return ucwords(strtolower(trim($string))); } //(public function titleCase()) public function setView(Zend_View_Interface $view) { $this->view = $view; } } Uso: echo $this->titleCase(‘mozilla firefox’);
  • 38. Globalcode – Open4education Zend_Layout Dá a seu site uma aparência consistente enquanto retém a flexibilidade Padrão Two-step view Usa Zend_View para renderização Marcadores úteis para configurar javascript, títulos e outros dados variáveis
  • 40. Globalcode – Open4education Zend_... Model? Classes modelo são representações abstratas de dados Podem ser estendidas de: Zend_Db_Table – Para abstração de banco de dados Ou qualquer outra classe que se encaixe em sua necessidade Ou construa suas próprias representações abstratas de seus dados Classes modelo podem conter lógica de negócio para preparar dados complexos para apresentação Código que seja estranho ao controlador e a visão é um bom candidato a ficar no modelo.
  • 41. Globalcode – Open4education Zend_Form Cria o HTML para seus formulários de entrada $form = new Zend_Form(); $form->addElement(‘text’, ‘ordernum‘); $form->addElement(‘text’, ‘date‘); Vários modos de imprimir os elementos de formulário echo $form; // tudo ou echo $form->ordernum; // só o especificado ou echo $form->getElement(‘ordernum’); HTML gerado pelo último echo <input type=“text” name=“ordernum” id=“ordernum”>
  • 42. Globalcode – Open4education Zend_Form Pode ser integrado com Zend_Filter, para fazer conversões de dados Pode ser integrado com Zend_Validate, para fazer validação de dados. Pode ser integrado com o Dijit do Dojo Toolkit para implementar RIA.
  • 43. Globalcode – Open4education Zend_Db Zend_Db pode criar SQL para você Strings SQL tendem a causar erros e não são curtas Zend_Db oferece muito mais do que apenas criar SQL quoting consistente escaping prepared statements (substituições para “?”) profiler
  • 44. Globalcode – Open4education Zend_Db Zend_Db implementa padrões para acesso a dados Data Table Gateway Data Row Gateway Data Mapper Active Record
  • 46. Globalcode – Open4education Segurança Autenticação, Autorização, Filtragem, Validação bahianoticias.com.b r
  • 47. Globalcode – Open4education Infraestrutura Registro Global, Sessão, Carregador de classes... odebrechtonline.com.b r
  • 48. Globalcode – Open4education Performance Cache, memória... automaistv.com.b r
  • 49. Globalcode – Open4education Web Services XML-RPC, SOAP, REST
  • 50. Globalcode – Open4education Nuvem Zend_GData, Zend_Service_Amazon, Zend_Cloud pela- positiva.blogspot.com
  • 51. Globalcode – Open4education Mais informações http://framework.zend.com http://forum.zfbrasil.com Livros:
  • 52. Globalcode – Open4education Mão na Massa http://www.temporealeventos.com.br/?area=199
  • 53. Globalcode – Open4education PHP Conference 2010 www.phpconf.com.br