Este documento fornece um resumo sobre:
1) Apresenta o Zend Framework como uma solução para problemas comuns na construção de aplicações profissionais para a internet, como manutenção e mudanças;
2) Discutem conceitos-chave do Zend Framework como MVC, componentes reutilizáveis e padrões abertos;
3) Explica como o Zend Framework ajuda a simplificar tarefas comuns na construção de aplicações web profissionais.
14. Internet
World Wide Web (1990)
http://en.wikipedia.org/wiki/File:First_Web_Server.jpg Sir Tim BernersLee
15. Internet
World Wide Web (1990)
Tim BernersLee especificou a HTML –
Hypertext Markup Language, e escreveu um
browser e um web server.
en.kioskea.net
19. Internet
Javascript (1995)
Javascript é uma linguagem de script
padronizada pela especificação ECMA262 e
pela norma ISO/IEC 16262.
Ela permite o processamento de eventos no
cliente.
marketingshift.com
20. Internet
Internet Explorer (1995)
http://en.wikipedia.org/wiki/File:Internet_Explorer_1.0.png
21. Internet
Internet Explorer (1995)
gednt.blogspot.com
operawatch.com
26. PHP
PHP (hoje PHP Hypertext Preprocessor) é uma
linguagem de programação compreensiva e
completa em funcionalidades com sólido suporte
a orientação a objetos.
PHP não precisa tem de ser compilado porque o
Zend Engine compila o código em tempo real.
PHP é livre e aberta, bem documentada e
mantida em comunidade (www.php.net).
28. PHP
A solução mais complexa raramente é a
certa. (...) enquanto outras soluções que nos
cercam parecem ficar maiores e mais
complexas, estamos nos esforçando para
simplificar e racionalizar o PHP (...).
Rasmus Lerdorf
29. PHP
PHP trata a imprevisibilidade
Independente da classe a ser usada:
$object = new $class();
Independente do método a ser executado:
$result = $object->$method();
30. PHP
PHP generaliza o código
Métodos dinâmicos:
public function __call($method,$arguments)
public function __callStatic($method,
$arguments)
public function __invoke()
$result = $object();
Leitura, gravação e criação dinâmica de atributos:
public function __get($attribute)
public function __set($attribute,$value)
40. Problemas na Construção de Software
O software muda...
A evolução de software refletese numa
necessidade intrínseca pelo desenvolvimento e a
manutenção contínua de sistemas, para
endereçar uma aplicação, ou resolver um
problema no domínio do mundo real
Lehman e Ramil 2001 APUD Hattori 2008
42. Problemas na Construção de Software
Fatos:
A manutenção é a fase mais longa do desenvolvimento
de um software.
Manutenções podem gerar problemas. [1]
Mudanças triviais podem gerar uma reação em cadeia de
erros. [2]
Se o software é feito em grupo, os erros aumentam. [3]
[1],[2].[3]: Jocélio Passos
43. Problemas na Construção de Software
Solução:
Construir software a partir de blocos de construção
complexos (componentes). [1]
Construir coisas complexas a partir de coisas simples.
Construir coisas mais complexas a partir de coisas
complexas.
[1]: Jocélio Passos
45. Zend Framework
Padrão de Codificação
Modelo de Criação de Componentes
Biblioteca de Componentes Reutilizáveis
Livre e Aberto
Baseado em Padrões Abertos
Documentado
50. MVC
☻Modelo oglobo.globo.com
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
bignadaquasar.wordpress.com
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
52. Controlador Frontal roteia URLs amigáveis
Convenção de roteamento padrão:
http://exemplo.com.br/controller/action/param1/value1...
controller mapeia Pares param/value
para o nome da são passados para a
classe action mapeia
ação
para o nome do
método
Controller1
action1()
HTTP action2()
request
Bootstrap: Front
index.php Controller
Controller2
action1()
action2()
56. 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()
59. 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
60. 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.
61. 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’);
64. 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
66. 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.
67. 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”>
69. 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