aplicações profissionais para internet com zend framework

79
Aplicações Profissionais para Internet com Zend Framework Flávio Gomes da Silva Lisboa www.fgsl.eti.br @fgsl

Upload: flavio-lisboa

Post on 26-May-2015

1.656 views

Category:

Technology


6 download

DESCRIPTION

Palestra apresentada na 1ª Compweek, em Jales, em 14 de setembro de 2011.

TRANSCRIPT

Page 1: Aplicações Profissionais para Internet com Zend Framework

Aplicações Profissionais para Internet com Zend Framework

Flávio Gomes da Silva Lisboawww.fgsl.eti.br

@fgsl

Page 2: Aplicações Profissionais para Internet com Zend Framework

Aviso

Você pode copiar e distribuir livremente esta apresentação, mas cite a fonte.

noteaqui.com

Page 3: Aplicações Profissionais para Internet com Zend Framework

Nossa agenda

1)Breve currículo2)Internet3)PHP4)Problemas de Construção de Software5)Zend Framework

Page 4: Aplicações Profissionais para Internet com Zend Framework

Breve currículo

http://www.temporealeventos.com.br

Page 5: Aplicações Profissionais para Internet com Zend Framework

InternetGUERRA FRIA

infoescola.com

Page 6: Aplicações Profissionais para Internet com Zend Framework

Internetoliveirarock.blogspot.com

Page 7: Aplicações Profissionais para Internet com Zend Framework

Internet

http://pt.wikipedia.org/wiki/Wernher_von_Braun

Werner Von Braun

Page 8: Aplicações Profissionais para Internet com Zend Framework

Internet

Foguetes V1 e V2

bloggeae.blogspot.com

mediastorehouse.com

Page 9: Aplicações Profissionais para Internet com Zend Framework

Internet

anti­­illuminati.blogspot.comhistory.nasa.gov

Page 10: Aplicações Profissionais para Internet com Zend Framework

Internet

aps.org

Sergei Korolev

obviousmag.org

Page 11: Aplicações Profissionais para Internet com Zend Framework

Internet

hardware.com.br

Page 12: Aplicações Profissionais para Internet com Zend Framework

InternetARPANET (1969)

infoescola.compersonalpages.manchester.ac.uk

Page 13: Aplicações Profissionais para Internet com Zend Framework

InternetNSFNET (1985)

computerhistory.org

Page 14: Aplicações Profissionais para Internet com Zend Framework

InternetWorld Wide Web (1990)

http://en.wikipedia.org/wiki/File:First_Web_Server.jpg Sir Tim Berners­Lee

Page 15: Aplicações Profissionais para Internet com Zend Framework

InternetWorld Wide Web (1990)

Tim Berners­Lee especificou a HTML – Hypertext Markup Language, e escreveu um browser e um web server.

en.kioskea.net

Page 16: Aplicações Profissionais para Internet com Zend Framework

InternetCERN publica o projeto WWW (1991)

askamathematician.com

Page 17: Aplicações Profissionais para Internet com Zend Framework

InternetNCSA Mosaic (1993) 

appleinsider.com

Page 18: Aplicações Profissionais para Internet com Zend Framework

InternetNetscape (1994) 

supportcave.com

Page 19: Aplicações Profissionais para Internet com Zend Framework

InternetJavascript (1995) 

Javascript é uma linguagem de script padronizada pela especificação ECMA­262 e pela norma ISO/IEC 16262.

Ela permite o processamento de eventos no cliente.

marketingshift.com

Page 20: Aplicações Profissionais para Internet com Zend Framework

InternetInternet Explorer (1995) 

http://en.wikipedia.org/wiki/File:Internet_Explorer_1.0.png

Page 21: Aplicações Profissionais para Internet com Zend Framework

InternetInternet Explorer (1995) 

operawatch.com

gednt.blogspot.com

Page 22: Aplicações Profissionais para Internet com Zend Framework

InternetConseqüências da Internet

www.fgsl.eti.br

Page 23: Aplicações Profissionais para Internet com Zend Framework

PHPPersonal Home Page (1995) 

Page 24: Aplicações Profissionais para Internet com Zend Framework

PHP

Fonte: Zend Whitepaper PHP

Page 25: Aplicações Profissionais para Internet com Zend Framework

PHP

Fonte: Zend Whitepaper PHP

Page 26: Aplicações Profissionais para Internet com Zend Framework

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

Page 27: Aplicações Profissionais para Internet com Zend Framework

PHP

Ocorrências do PHP em tipos de aplicação

Page 28: Aplicações Profissionais para Internet com Zend Framework

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

Page 29: Aplicações Profissionais para Internet com Zend Framework

PHPPHP trata a imprevisibilidade

Independente da classe a ser usada:

$object = new $class();

Independente do método a ser executado:

$result = $object->$method();

Page 30: Aplicações Profissionais para Internet com Zend Framework

PHPPHP 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)

Page 31: Aplicações Profissionais para Internet com Zend Framework

PHPQuem usa PHP

Page 32: Aplicações Profissionais para Internet com Zend Framework

PHPUtilização do PHP no mundo

Em 12 milhões de domínios.Fonte: http://phpadvent.org/2010/usage­statistics­by­ilia­alshanetsky

Page 33: Aplicações Profissionais para Internet com Zend Framework

PHPCombinação poderosa

Page 34: Aplicações Profissionais para Internet com Zend Framework

Problemas na Construção de Software

Não basta o anel do Lanterna Verde

http://aneldolanternaverde.blogspot.com/

Page 35: Aplicações Profissionais para Internet com Zend Framework

Problemas na Construção de Software

É preciso alguém preparado.

museudoheroi.blogspot.com

Page 36: Aplicações Profissionais para Internet com Zend Framework

Problemas na Construção de Software

Senão qualquer um podia ser.

emeralddawn.com

Page 37: Aplicações Profissionais para Internet com Zend Framework

Problemas na Construção de Software

Estamos falando de aplicações profissionais para Internet e não de “sitiozinhos”.

Estamos falando de sistemas de informação e não de páginas pessoais.

Page 38: Aplicações Profissionais para Internet com Zend Framework

Problemas na Construção de Software

Não somos capazes de escrever programas isentos de falhas

Jocélio Passos. Msc (UFPE)

Ninguém tem um cérebro grande o bastante para conter um programa de computador moderno

Edsger Djikstra (1972)

Page 39: Aplicações Profissionais para Internet com Zend Framework

Problemas na Construção de Software

O trabalho do programador é desumano porque se exige que eles (sic) escrevam grandes 

quantidades de código complexo sem erros e em um curto espaço de tempo

Jocélio Passos. Msc (UFPE)

Page 40: Aplicações Profissionais para Internet com Zend Framework

Problemas na Construção de Software

O software muda...

A evolução de software reflete­se 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 realLehman e Ramil 2001 APUD Hattori 2008

Page 41: Aplicações Profissionais para Internet com Zend Framework

Problemas na Construção de Software

E de acordo com a arquitetura do software, a mudança pode ser complicada...

Page 42: Aplicações Profissionais para Internet com Zend Framework

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

Page 43: Aplicações Profissionais para Internet com Zend Framework

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

Page 44: Aplicações Profissionais para Internet com Zend Framework

Problemas na Construção de Software

Novo problema:Como aplicar essa solução?

Page 45: Aplicações Profissionais para Internet com Zend Framework

Zend Framework

Padrão de CodificaçãoModelo de Criação de Componentes

Biblioteca de Componentes Reutilizáveis

Livre e Aberto

Baseado em Padrões Abertos

Documentado

Page 46: Aplicações Profissionais para Internet com Zend Framework

☻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?

Page 47: Aplicações Profissionais para Internet com Zend Framework

☻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

Por que Zend Framework?

Page 48: Aplicações Profissionais para Internet com Zend Framework

☻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 Features

Page 49: Aplicações Profissionais para Internet com Zend Framework

☻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

Page 50: Aplicações Profissionais para Internet com Zend Framework

☻ModeloClasses reusáveis que acessam dados e regras de negócioMantém SQL e detalhes da aplicação em um só lugar

☻VisãoTemplates contendo HTML ou outra saída, com poucos trechos de PHPColoca 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çãoConecta modelo e visãoNão confunda com “controlador frontal”, que apenas inicializa o  MVC

enciclopedia.com.pt

bignadaquasar.wordpress.com

oglobo.globo.com

MVC                         

Page 51: Aplicações Profissionais para Internet com Zend Framework

Do Controlador Frontal para o Controlador de Página

Page 52: Aplicações Profissionais para Internet com Zend Framework

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

FrontController

Controller1action1()action2()

Controller2action1()action2()

Bootstrap:index.php

HTTP request

Page 53: Aplicações Profissionais para Internet com Zend Framework

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

Page 54: Aplicações Profissionais para Internet com Zend Framework

Zend_Application

Deixa a configuração e inicialização separadas

$application = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini');$application->bootstrap() ->run();

Page 55: Aplicações Profissionais para Internet com Zend Framework

Zend_Application

[production]phpSettings.display_startup_errors = 0phpSettings.display_errors = 0includePaths.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 = 0resources.frontController.baseUrl = BASE_URLresources.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 = 1phpSettings.display_errors = 1

[development : production]phpSettings.display_startup_errors = 1phpSettings.display_errors = 1resources.frontController.params.displayExceptions = 1

Page 56: Aplicações Profissionais para Internet com Zend Framework

Zend_Controller_Action

Classes de controle manipulam grupos de requisiçõeshttp://exemplo.com/controller/action

Padrão: IndexControllerOrganiza e agrupa funcionalidadesUma classe (herdeira de Zend_Controller_Action) para cada controlador

Métodos de ação em cada classe de controle manipulam requisiçõeshttp://exemplo.com.br/controller/action

Padrão: indexAction()Algo como actionAction()

Exemplo: Se action é “edit” então o método é editAction()

Page 57: Aplicações Profissionais para Internet com Zend Framework

Zend_Controller_Action

Page 58: Aplicações Profissionais para Internet com Zend Framework

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

Page 59: Aplicações Profissionais para Internet com Zend Framework

Zend_View

Scripts (templates)Templates baseados em scripts PHP para apresentação de dadosDevem conter somente lógica de exibição, não lógica de negócio

Nomeação padrão: “myaction.phtml” 

HelpersClasses 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

Page 60: Aplicações Profissionais para Internet com Zend Framework

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. 

Page 61: Aplicações Profissionais para Internet com Zend Framework

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

Page 62: Aplicações Profissionais para Internet com Zend Framework

Controlador chama visão... 

Page 63: Aplicações Profissionais para Internet com Zend Framework

...automaticamente

Page 64: Aplicações Profissionais para Internet com Zend Framework

Zend_Layout

Dá a seu site uma aparência consistente enquanto retém a flexibilidade

Padrão Two-step viewUsa Zend_View para renderização

Marcadores úteis para configurar javascript, títulos e outros dados variáveis

Page 65: Aplicações Profissionais para Internet com Zend Framework

Zend_Layout

Page 66: Aplicações Profissionais para Internet com Zend Framework

Zend_... Model?

Classes modelo são representações abstratas de dados

Podem ser estendidas de:Zend_Db_Table – Para abstração de banco de dadosOu qualquer outra classe que se encaixe em sua necessidadeOu 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.

Page 67: Aplicações Profissionais para Internet com Zend Framework

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”>

Page 68: Aplicações Profissionais para Internet com Zend Framework

Zend_Form

Pode ser integrado com Zend_Filter, para fazer conversões de dadosPode ser integrado com Zend_Validate, para fazer validação de dados.Pode ser integrado com o Dijit do Dojo Toolkit para implementar RIA.

Page 69: Aplicações Profissionais para Internet com Zend Framework

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 consistenteescapingprepared statements (substituições para “?”)profiler

Page 70: Aplicações Profissionais para Internet com Zend Framework

Zend_Db

Zend_Db implementa padrões para acesso a dados

Data Table GatewayData Row GatewayData MapperActive Record

Page 71: Aplicações Profissionais para Internet com Zend Framework

Muitos componentes...

Page 72: Aplicações Profissionais para Internet com Zend Framework

Segurança

Autenticação, Autorização, Filtragem, Validação

bahianoticias.com.br

Page 73: Aplicações Profissionais para Internet com Zend Framework

Infraestrutura

Registro Global, Sessão, Carregador de classes...

odebrechtonline.com.br

Page 74: Aplicações Profissionais para Internet com Zend Framework

Performance

Cache, memória...

automaistv.com.br

Page 75: Aplicações Profissionais para Internet com Zend Framework

Web Services

XML­RPC, SOAP, REST

Page 76: Aplicações Profissionais para Internet com Zend Framework

Nuvem

Zend_GData, Zend_Service_Amazon, Zend_Service_WindowsAzure,  Zend_Cloud

pela­positiva.blogspot.com

Page 77: Aplicações Profissionais para Internet com Zend Framework

Integração com Dojo Toolkit

Frontend dinâmico, com animações e gráficos.

Page 78: Aplicações Profissionais para Internet com Zend Framework

Mais informações:

http://framework.zend.com http://www.fgsl.eti.brhttp://www.temporealeventos.com.br 

Page 79: Aplicações Profissionais para Internet com Zend Framework

Referências

http://www.facape.br/jocelio/es/material_em_pdf_conceitual/ESFuturoSW.pdf

http://www.inf.usi.ch/phd/hattori/downloads/Dissertacao_LilePalmaHattori.pdf im.ufba.br/pub/MATA63/.../MATA63 ProjetoDeSoftware­01.ppt