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.
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)
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
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();
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