zf básico - 1. introdução

23
1 Zend Framework Zend Framework Parte I: Introdução Parte I: Introdução

Upload: marcos-bezerra

Post on 25-May-2015

3.127 views

Category:

Education


6 download

DESCRIPTION

Mini-curso sobre Zend Framework - Parte 1

TRANSCRIPT

Page 1: ZF Básico - 1. Introdução

11

Zend FrameworkZend Framework

Parte I: IntroduçãoParte I: Introdução

Page 2: ZF Básico - 1. Introdução

22

O que é um framework?O que é um framework?

É uma “base” de onde se pode É uma “base” de onde se pode desenvolver algo maior ou mais desenvolver algo maior ou mais específico.específico.

É uma coleção de códigos-fonte, É uma coleção de códigos-fonte, classes, funções, técnicas e classes, funções, técnicas e metodologias que facilitam o metodologias que facilitam o desenvolvimento de novos softwares.desenvolvimento de novos softwares.

Page 3: ZF Básico - 1. Introdução

33

Porque é vantagem usar um Porque é vantagem usar um framework?framework?

Contras:Contras:– Forma diferente de programar em Forma diferente de programar em

relação à cultura do programador;relação à cultura do programador;– Requer aprender uma nova sintaxe, Requer aprender uma nova sintaxe,

convenções para nomes de arquivos, convenções para nomes de arquivos, variáveis e tabelas de banco de dados;variáveis e tabelas de banco de dados;

– É preciso estar “engessado” à forma em É preciso estar “engessado” à forma em que o framework trabalha.que o framework trabalha.

Page 4: ZF Básico - 1. Introdução

44

Porque é vantagem usar um Porque é vantagem usar um framework?framework?

Prós:Prós:– A manutenção de um programa é muito A manutenção de um programa é muito

mais fácil;mais fácil;– Contribui para a rápida adaptação de novos Contribui para a rápida adaptação de novos

integrantes na equipe de desenvolvimento;integrantes na equipe de desenvolvimento;– Tarefas repetitivas podem ser Tarefas repetitivas podem ser

automatizadas;automatizadas;– Separação de apresentação e lógica;Separação de apresentação e lógica;– Facilidade de geração de testes Facilidade de geração de testes

automatizados e documentação.automatizados e documentação.

Page 5: ZF Básico - 1. Introdução

55

O que é o Zend Framework?O que é o Zend Framework?

É um framework para PHP5, É um framework para PHP5, orientado a objetos e baseado em orientado a objetos e baseado em MVC.MVC.

Faz parte do PHP Collaboration Faz parte do PHP Collaboration Project, uma iniciativa da Zend, de Project, uma iniciativa da Zend, de seus parceiros de negócios e da seus parceiros de negócios e da comunidade de desenvolvedores comunidade de desenvolvedores PHP.PHP.

Page 6: ZF Básico - 1. Introdução

66

Porque a escolha do Zend Porque a escolha do Zend Framework?Framework?

Único framework para PHP com o Único framework para PHP com o suporte de uma empresa especializada: suporte de uma empresa especializada: a Zend.a Zend.

Utilizado e testado por grandes Utilizado e testado por grandes empresas, tais como IBM e Oracle.empresas, tais como IBM e Oracle.

Licença BSD, a qual permite que os Licença BSD, a qual permite que os softwares desenvolvidos possam ser softwares desenvolvidos possam ser código-fonte proprietário.código-fonte proprietário.

Baseado em componentes reutilizáveis.Baseado em componentes reutilizáveis.

Page 7: ZF Básico - 1. Introdução

77

Componentes do ZFComponentes do ZF

Zend_Controller – responsável pela Zend_Controller – responsável pela camada de controle no MVC.camada de controle no MVC.

Zend_Db – responsável pelo acesso à Zend_Db – responsável pelo acesso à base de dados. Atualmente suporta os base de dados. Atualmente suporta os seguintes SGBDs: SQL Server, seguintes SGBDs: SQL Server, Firebird, Informix, MySQL, Oracle, Firebird, Informix, MySQL, Oracle, ODBC 3, PostgreSQL e SQLite.ODBC 3, PostgreSQL e SQLite.

Zend_Feed – para leitura de RSS e Zend_Feed – para leitura de RSS e Atom.Atom.

Page 8: ZF Básico - 1. Introdução

88

Componentes do ZFComponentes do ZF

Zend_Filter e Zend_InputFilter – Zend_Filter e Zend_InputFilter – fornecem funcionalidades de filtro fornecem funcionalidades de filtro para dados digitados pelos usuários.para dados digitados pelos usuários.

Zend_HttpClient – permite criar Zend_HttpClient – permite criar requisições HTTP.requisições HTTP.

Zend_Json – permite transformar Zend_Json – permite transformar objetos PHP em objetos JavaScript e objetos PHP em objetos JavaScript e vice-versa. Muito útil para trabalhar vice-versa. Muito útil para trabalhar com AJAX.com AJAX.

Page 9: ZF Básico - 1. Introdução

99

Componentes do ZFComponentes do ZF

Zend_Log – provê a funcionalidade de Zend_Log – provê a funcionalidade de log para as aplicações.log para as aplicações.

Zend_Mail e Zend_Mime – facilitam o Zend_Mail e Zend_Mime – facilitam o envio de e-mails, tanto de texto envio de e-mails, tanto de texto quanto com formato MIME e arquivos quanto com formato MIME e arquivos anexados.anexados.

Zend_Pdf – facilita a criação e leitura Zend_Pdf – facilita a criação e leitura de arquivos no formato PDF.de arquivos no formato PDF.

Zend_Search – para criação de Zend_Search – para criação de consultas complexas.consultas complexas.

Page 10: ZF Básico - 1. Introdução

1010

Componentes do ZFComponentes do ZF

Zend_View – implementa a camada Zend_View – implementa a camada de visão do MVC.de visão do MVC.

Zend_XmlRpc – cliente do protocolo Zend_XmlRpc – cliente do protocolo XML-RPC para acessar webservices.XML-RPC para acessar webservices.

Page 11: ZF Básico - 1. Introdução

1111

Guias de EstiloGuias de Estilo

Todos os usuários do ZF são Todos os usuários do ZF são fortemente incentivados a utilizarem fortemente incentivados a utilizarem certos padrões de codificação.certos padrões de codificação.

Os programas gerados assim são Os programas gerados assim são facilmente entendidos por outros facilmente entendidos por outros programadores.programadores.

O guia de estilos completo pode ser O guia de estilos completo pode ser encontrado na documentação on-line.encontrado na documentação on-line.

Page 12: ZF Básico - 1. Introdução

1212

Guias de EstiloGuias de Estilo

Os arquivos devem ser limpos. Os arquivos devem ser limpos. Nenhum espaço ou informação antes Nenhum espaço ou informação antes da inicialização do código PHP.da inicialização do código PHP.

Nenhum nome de classe deve iniciar Nenhum nome de classe deve iniciar com Zend_. Somente classes com Zend_. Somente classes pertencentes ao framework podem pertencentes ao framework podem ser nomeadas dessa forma, para ser nomeadas dessa forma, para evitar conflitos de nomes.evitar conflitos de nomes.

Page 13: ZF Básico - 1. Introdução

1313

Guias de EstiloGuias de Estilo

UnderscoresUnderscores são proibidos em nomes são proibidos em nomes de métodos. Ex.: usar de métodos. Ex.: usar getTodayDates() ao invés de getTodayDates() ao invés de get_today_dates().get_today_dates().

Nomes de variáveis devem começar Nomes de variáveis devem começar com com underscoreunderscore somente se forem somente se forem privadas ou protegidas. Ex.: private privadas ou protegidas. Ex.: private $_varPrivada ou protect $_varPrivada ou protect $_varProtegida.$_varProtegida.

Page 14: ZF Básico - 1. Introdução

1414

Guias de EstiloGuias de Estilo

Todas as variáveis devem ser definidas Todas as variáveis devem ser definidas com seus respectivos modificadores: com seus respectivos modificadores: public, private ou protect.public, private ou protect.

Utilizar a tag-padrão do PHP <?php ?> e Utilizar a tag-padrão do PHP <?php ?> e não sua forma abreviada <? ?>.não sua forma abreviada <? ?>.

Manter o código legível com uso de Manter o código legível com uso de identação e espaçamentos. Ex.:identação e espaçamentos. Ex.:$concat = ‘exemplo’ . ‘de’ . ‘concatenação’;$concat = ‘exemplo’ . ‘de’ . ‘concatenação’;

Page 15: ZF Básico - 1. Introdução

1515

Guias de EstiloGuias de Estilo Todo arquivo precisa incluir documentação que Todo arquivo precisa incluir documentação que

possa ser lida pelo PhpDocumentor (estilo possa ser lida pelo PhpDocumentor (estilo PHPDoc). Ex.:PHPDoc). Ex.:

/**/*** método open()* método open()* recebe o nome do banco de dados e instancia o* recebe o nome do banco de dados e instancia o* objeto PDO correspondente* objeto PDO correspondente*** @param string $name* @param string $name* @return PDO Object* @return PDO Object*/*/

public static function open($name) { ... }public static function open($name) { ... }

Page 16: ZF Básico - 1. Introdução

1616

Estrutura dos ProjetosEstrutura dos ProjetosDiretórioDiretório DescriçãoDescrição

application/application/ Diretório da aplicação.Diretório da aplicação.

controllers/controllers/ Diretório onde serão criados os controladores da aplicação.Diretório onde serão criados os controladores da aplicação.

models/models/ Diretório onde serão criados os modelos da aplicação.Diretório onde serão criados os modelos da aplicação.

views/views/ Diretório onde serão criados os arquivos de visão.Diretório onde serão criados os arquivos de visão.

.htaccess.htaccess Arquivo com configurações especiais para este diretório.Arquivo com configurações especiais para este diretório.

config.iniconfig.ini Arquivo de configurações da aplicação, como usuário de BD, Arquivo de configurações da aplicação, como usuário de BD, etc.etc.

public/public/ Diretório com arquivos que podem ser acessados pelo Diretório com arquivos que podem ser acessados pelo navegador.navegador.

images/images/ Diretório com as imagens da aplicação.Diretório com as imagens da aplicação.

scripts/scripts/ Diretório para os arquivos com scripts JavaScript.Diretório para os arquivos com scripts JavaScript.

styles/styles/ Diretório para armazenar os arquivos com definição CSS.Diretório para armazenar os arquivos com definição CSS.

.htaccess.htaccess Arquivo com configurações especiais para este diretório.Arquivo com configurações especiais para este diretório.

index.phpindex.php Arquivo inicial do projeto com todas as definições da Arquivo inicial do projeto com todas as definições da aplicação.aplicação.

.htaccess.htaccess Arquivo com configurações especiais para o diretório raiz.Arquivo com configurações especiais para o diretório raiz.

Page 17: ZF Básico - 1. Introdução

1717

Camada de SegurançaCamada de Segurança root-dir/.htaccessroot-dir/.htaccess

RewriteEngine onRewriteEngine onRewriteRule .* index.phpRewriteRule .* index.phpphp_flag magic_quotes_gpc offphp_flag magic_quotes_gpc offphp_flag register_globals offphp_flag register_globals off

Reescrita de URLs ativada.Reescrita de URLs ativada. Extensões de arquivos redirecionadas para Extensões de arquivos redirecionadas para

index.php.index.php. Diretivas magic_quotes_gpc e Diretivas magic_quotes_gpc e

register_globals desabilitadas register_globals desabilitadas forçadamente para aumentar a forçadamente para aumentar a performance e segurança da aplicação.performance e segurança da aplicação.

Page 18: ZF Básico - 1. Introdução

1818

Camada de SegurançaCamada de Segurança

root-dir/application/.htaccessroot-dir/application/.htaccessdeny from alldeny from all

Indica que o navegador não pode Indica que o navegador não pode fazer acesso diretamente aos fazer acesso diretamente aos arquivos da aplicação, como os arquivos da aplicação, como os modelos e os controladores.modelos e os controladores.

Quem fará o acesso a estes arquivos Quem fará o acesso a estes arquivos é o index.php.é o index.php.

Page 19: ZF Básico - 1. Introdução

1919

Camada de SegurançaCamada de Segurança

root-dir/public/.htaccessroot-dir/public/.htaccessRewriteEngine offRewriteEngine off

Indica que os arquivos deste diretório Indica que os arquivos deste diretório podem ser acessados normalmente.podem ser acessados normalmente.

Desabilita as regras de reescrita Desabilita as regras de reescrita criadas no diretório superior.criadas no diretório superior.

Page 20: ZF Básico - 1. Introdução

2020

Camada de SegurançaCamada de Segurança

Métodos importantes para garantir a Métodos importantes para garantir a segurança da aplicação:segurança da aplicação:Zend_Filter_Input::$object->noTags(): Zend_Filter_Input::$object->noTags():

remove todas as tags HTML e JavaScript remove todas as tags HTML e JavaScript que o usuário possa ter digitado nos que o usuário possa ter digitado nos campos de input.campos de input.

Ex.:Ex.:

$email = trim($post->noTags(‘email’));$email = trim($post->noTags(‘email’));

$post é uma instância de Zend_Filter_Input$post é uma instância de Zend_Filter_Input

Page 21: ZF Básico - 1. Introdução

2121

Camada de SegurançaCamada de Segurança

Métodos importantes para garantir a Métodos importantes para garantir a segurança da aplicação:segurança da aplicação:Zend_Db::$object->quoteInto(): filtra os Zend_Db::$object->quoteInto(): filtra os

dados enviados para uma consulta SQL, de dados enviados para uma consulta SQL, de forma que sejam removidos quaisquer forma que sejam removidos quaisquer caracteres que possam significar um caracteres que possam significar um ataque de segurança, como o SQL Injection.ataque de segurança, como o SQL Injection.

Ex.:Ex.:$where = $db->quoteInto(“email = ?”, $where = $db->quoteInto(“email = ?”,

$email);$email);$db é uma instância de Zend_Db$db é uma instância de Zend_Db

Page 22: ZF Básico - 1. Introdução

2222

Plano de PesquisaPlano de Pesquisa

Desenvolvimento de uma aplicação Desenvolvimento de uma aplicação para gerenciar coleções de livros.para gerenciar coleções de livros.

Pré-requisitos:Pré-requisitos:– Ambiente de servidores instalados.Ambiente de servidores instalados.– IDE para modelagem de dados IDE para modelagem de dados

instalada.instalada.– IDE para codificação instalada.IDE para codificação instalada.

Page 23: ZF Básico - 1. Introdução

2323

ReferênciasReferências

MINETTO, Elton Luis. MINETTO, Elton Luis. Frameworks para Frameworks para Desenvolvimento em PHP. Desenvolvimento em PHP. São Paulo: São Paulo: Novatec, 2007.Novatec, 2007.

ZEND FRAMEWORK. API Manual. Disponível ZEND FRAMEWORK. API Manual. Disponível em: em: <http://framework.zend.com/apidoc/core/> <http://framework.zend.com/apidoc/core/> Acesso em: 24 fev. 2008, 19:33.Acesso em: 24 fev. 2008, 19:33.

CANTINHO DO ZEND FRAMEWORK. CANTINHO DO ZEND FRAMEWORK. Introdução. Disponível em: Introdução. Disponível em: <http://zendframework.ribafs.net/taxonomy<http://zendframework.ribafs.net/taxonomy/term/1> Acesso em: 24 fev. 2008, 15:10./term/1> Acesso em: 24 fev. 2008, 15:10.