Desenvolvendo um Blog com 
Zend Framework 2 
$ Cezar Junior de Souza - 2014
Quem sou eu? 
$ Bacharel em Sistemas de Informação; 
$ Especialista em Engenharia e Qualidade de 
Software; 
$ Programador...
Cronograma 
$ Visão geral do ZF2; 
$ Principais características do 
ZF2; 
$ Preparando o Ambiente de 
desenvolvimento; 
$ ...
Cronograma 
$ Utilizando Session; 
$ Criando um serviço de 
autenticação e seus testes; 
$ Criando controller para 
Autent...
Cronograma 
$ Criando os testes da Model 
Comment, e após, a Model 
Comment; 
$ Criando os testes para o 
Controller Comme...
Cronograma 
$ Criando o controle de acesso 
com ACLs;
Visão geral do ZF2 
$ O que é um Framework?
Visão geral do ZF2 
$ Um pouco da história do Zend Framework
Visão geral do ZF2 
$ Por que usar o ZF2? 
● É modular e funciona como blocos de concreto que podem ser 
usados peça por p...
Visão geral do ZF2 
$ Sistema de Autoloading 
$ Namespaces: 
namespace ModuleFolder; 
namespace AdminModel; 
namespace Cli...
Visão geral do ZF2 
$ Dependency injection (Di) 
$ é um design pattern com o proposito de diminuir o 
acoplamento entre os...
Visão geral do ZF2 
$ Dependency injection (Di) 
$ Sem DI 
class Foo { 
protected $bar; 
… public function _construct(){ 
...
Visão geral do ZF2 
$ Gerenciador de eventos
Visão geral do ZF2 
$ Table Gateway
Visão geral do ZF2 
$ O novo MVC do ZF2
Visão geral do ZF2 
$ Modulos
Preparando o Ambiente de 
desenvolvimento 
ATENÇÃO 
Este processo de configuração do Ambiente de desenvolvimento 
irá func...
Preparando o Ambiente de 
desenvolvimento 
$ sudo apt-get moo 
(__) 
(oo) 
/------/ 
/ | || 
* /---/ 
~~ ~~ 
..."Have you ...
Preparando o Ambiente de 
desenvolvimento 
$ Instalando o sublime text 3 
$ sudo add-apt-repository ppa:webupd8team/sublim...
Preparando o Ambiente de 
desenvolvimento 
$ Instalando o postgresql e seu cliente pgadmin3 
$ sudo apt-get install postgr...
Preparando o Ambiente de 
desenvolvimento 
$ Instalando o git 
$ sudo apt-get install git 
$ Instalando o php5 e a pdo do ...
Criando o projeto Blog
Criando o projeto Blog 
$ Baixar o Skeleton Application 
cd ~ 
mkdir workspace 
git clone 
git://github.com/zendframework/...
Criando o projeto Blog 
$ Baixar o Skeleton Application 
$ cd ~ 
$ mkdir workspace 
$ cd workspace 
$ git clone 
$ git://g...
Criando o projeto Blog 
$ Baixar as dependências do projeto pelo composer 
$ cd Blog 
$ php composer.phar self-update 
$ p...
Criando o projeto Blog 
$ Baixar o ZFTool 
$ php composer.phar require zendframework/zftool:dev-master
Criando o projeto Blog 
$ Baixar o phpunit 
$ nano composer.json 
$ Adicionar a dependência do phpunit nos pacotes requeri...
Configurando o Banco de dados 
$ Configurando o Banco de dados 
$ global.php 
$ local.php 
$ /config/test.config.php
Criando o módulo Core 
$ cd ~/workspace/Blog 
$ php vendor/zendframework/zftool/zf.php create module core
Criando o módulo Admin 
$ php vendor/zendframework/zftool/zf.php create module core
Configurando os testes para o 
módulo admin 
$ mkdir -p module/Admin/tests/src/Admin 
$ gedit module/Admin/tests/Bootstrap...
Criando os testes da Model User, e 
após, a Model User; 
$ gedit module/Admin/tests/src/Admin/Model/UserTest.php 
$ Execut...
Criando os testes para o Controller Users, o 
Controller Users, seu Form e views; 
$ Criando os testes para o controller U...
Utilizando Session 
$ Adicionando serviço de sessão e 
dependência para o serviço de autenticação 
$ module/Admin/module.c...
Criando um serviço de autenticação 
e seus testes; 
$ Teste do Serviço de autenticação 
$ Serviço de autenticação
Criando controller para Autenticação, form e 
testes; 
$ Form de login 
$ Teste AuthController 
$ AuthController 
$ Adicio...
Criando controller para Autenticação, form e 
testes; 
$ Form de login 
$ Teste AuthController 
$ AuthController 
$ Adicio...
Criando os testes da Model 
Categorie, e após, a Model 
Categorie 
$ Criando os testes para a model Categorie 
$ Criando a...
Criando os testes para o Controller Categories, o 
Controller Categories, seu Form e views 
$ Criando os testes para o Cat...
Criando os testes da Model Post, e 
após, a Model Post 
$ Criando os testes para a model Post 
$ Criando a model post 
$ C...
Criando os testes para o Controller 
Posts, o Controller Posts, seu Form 
e views; 
$ Criando os Tests para o PostsControl...
Criando o módulo main 
$ php vendor/zendframework/zftool/zf.php create module main 
$ Copiar modulo.config.php do módulo a...
Criando o IndexController do módulo Main, seu 
teste e exibindo os posts em sua view 
$ Criando o teste do index controlle...
Criando os testes da Model Comment, e após, a 
Model Comment 
$ Criando os testes para a model Comment 
$ Criando a model ...
Criando os testes para o Controller Comments, o 
Controller Comments, seu Form e views; 
$ Criando os testes para o Commen...
Definindo o módulo main como o principal 
$ Recortar do module.config.php do modulo application e colar no modulo main 
'h...
Definindo o módulo main como o principal 
$ Adicionar view manager no modulo.config.php do modulo main e deixar em branco ...
ViewHelper de sessão 
$ module/Core/src/Core/View/Helper/Session.php 
$ Adicionar helper no module.config.php do 
Modulo C...
Adicionar join com a entity user na query de posts 
no IndexController do módulo main 
$ module/Main/src/Main/Controller/I...
ACLs 
$ Adicionando listeners 
$ module/Admin/Module.php 
$ Adicionar teste authorize no service Auth 
$ Configurando role...
ACLs 
$ Construir às ACLs no arquivo 
moduleCoresrcCoreAclBuilder.php 
$ Adicionar o método authorize no Service 
AdminAut...
Referências 
$ Zend Framework 2 na prática; Minetto; 2012 
$ http://framework.zend.com/manual 
$ Enrico Zimuel Senior Soft...
Próximos SlideShares
Carregando em…5
×

ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2

2.566 visualizações

Publicada em

https://github.com/cezar08/blog

Publicada em: Tecnologia
0 comentários
3 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
2.566
No SlideShare
0
A partir de incorporações
0
Número de incorporações
31
Ações
Compartilhamentos
0
Downloads
57
Comentários
0
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2

  1. 1. Desenvolvendo um Blog com Zend Framework 2 $ Cezar Junior de Souza - 2014
  2. 2. Quem sou eu? $ Bacharel em Sistemas de Informação; $ Especialista em Engenharia e Qualidade de Software; $ Programador Web desde 2010; $ Mais informações: LinkeDin
  3. 3. Cronograma $ Visão geral do ZF2; $ Principais características do ZF2; $ Preparando o Ambiente de desenvolvimento; $ Criando o projeto Blog com ZF2; $ Configurando o banco de dados postgresql; $ Criando o module Core; $ Criando o module Admin; $ Configurando o module Admin e seus Testes; $ Criando os testes da Model User, e após, a Model User; $ Criando os testes para o Controller Users, o Controller Users, seu Form e views;
  4. 4. Cronograma $ Utilizando Session; $ Criando um serviço de autenticação e seus testes; $ Criando controller para Autenticação, form e testes; $ Criando os testes da Model Categorie, e após, a Model Categorie; $ Criando os testes para o Controller Categories, o Controller Categories, seu Form e views; $ Criando os testes da Model Post, e após, a Model Post; $ Criando os testes para o Controller Posts, o Controller Posts, seu Form e views; $ Criando o módulo main $ Criando o IndexController do módulo Main, seu teste e exibindo os posts em sua view;
  5. 5. Cronograma $ Criando os testes da Model Comment, e após, a Model Comment; $ Criando os testes para o Controller Comments, o Controller Comments, seu Form e views; $ Fazendo comentários por Ajax; $ Definindo o módulo Main como o módulo principal; $ Criando o layout para o blog; $ Criando ViewHelper de sessão; $ Alterando menu de acordo com a role do usuário autenticado; $ Adicionar join com a entity user na query de posts no IndexController do módulo main $ Exibir dados do usuário que criou o post na view do IndexController do módulo main;
  6. 6. Cronograma $ Criando o controle de acesso com ACLs;
  7. 7. Visão geral do ZF2 $ O que é um Framework?
  8. 8. Visão geral do ZF2 $ Um pouco da história do Zend Framework
  9. 9. Visão geral do ZF2 $ Por que usar o ZF2? ● É modular e funciona como blocos de concreto que podem ser usados peça por peça com outras aplicações ou frameworks; ● Extensível: fácil de adaptar o framework para suas necessidades; ● Alta performasse: Projetado pensando em desempenho; ● Segurança: Todas as criptografias de segurança que você precisa; ● Comunidade: Uma extensa comunidade e uma grande base de colaboradores e usuários; ● Pronto para o negócio: Uma história de sucesso provada e executada em aplicações de alto uso e negócio critico.
  10. 10. Visão geral do ZF2 $ Sistema de Autoloading $ Namespaces: namespace ModuleFolder; namespace AdminModel; namespace ClienteController; $ Class-Maps No arquivo autoload_classmap.php do módulo: return array( 'MinhaClasse1' => 'minha_classe1.php', 'MinhaClasse2' => 'minha_classe2.php', );
  11. 11. Visão geral do ZF2 $ Dependency injection (Di) $ é um design pattern com o proposito de diminuir o acoplamento entre os componentes do software.
  12. 12. Visão geral do ZF2 $ Dependency injection (Di) $ Sem DI class Foo { protected $bar; … public function _construct(){ $this->bar = new Bar(); } ... } Contras: Dificuldades para os testes Código não isolado Dificuldade para reusar o código $ Com DI class Foo { protected $bar; … public function _construct(Bar $bar){ $this->bar = $bar; } ... } Pros: Facilidade nos testes Flexibilidade na arquitetura
  13. 13. Visão geral do ZF2 $ Gerenciador de eventos
  14. 14. Visão geral do ZF2 $ Table Gateway
  15. 15. Visão geral do ZF2 $ O novo MVC do ZF2
  16. 16. Visão geral do ZF2 $ Modulos
  17. 17. Preparando o Ambiente de desenvolvimento ATENÇÃO Este processo de configuração do Ambiente de desenvolvimento irá funcionar nas versões do Ubuntu acima da 12.04, foi testado até a 14.04.
  18. 18. Preparando o Ambiente de desenvolvimento $ sudo apt-get moo (__) (oo) /------/ / | || * /---/ ~~ ~~ ..."Have you mooed today?"...
  19. 19. Preparando o Ambiente de desenvolvimento $ Instalando o sublime text 3 $ sudo add-apt-repository ppa:webupd8team/sublime-text-3 $ sudo apt-get update $ sudo apt-get install sublime-text-installer
  20. 20. Preparando o Ambiente de desenvolvimento $ Instalando o postgresql e seu cliente pgadmin3 $ sudo apt-get install postgresql $ sudo apt-get install pgadmin3 $ Alterando a senha do usuário postgres $ sudo -su postgres $ psql template1 template1=# ALTER USER postgres WITH PASSWORD 'root';
  21. 21. Preparando o Ambiente de desenvolvimento $ Instalando o git $ sudo apt-get install git $ Instalando o php5 e a pdo do postgres para php $ sudo apt-get install php5 $ sudo apt-get install php5-pgsql
  22. 22. Criando o projeto Blog
  23. 23. Criando o projeto Blog $ Baixar o Skeleton Application cd ~ mkdir workspace git clone git://github.com/zendframework/ZendSkeletonApplication.git cp -R ZendSkeletonApplication Blog
  24. 24. Criando o projeto Blog $ Baixar o Skeleton Application $ cd ~ $ mkdir workspace $ cd workspace $ git clone $ git://github.com/zendframework/ZendSkeletonApplication.git $ cp -R ZendSkeletonApplication Blog
  25. 25. Criando o projeto Blog $ Baixar as dependências do projeto pelo composer $ cd Blog $ php composer.phar self-update $ php composer.phar install
  26. 26. Criando o projeto Blog $ Baixar o ZFTool $ php composer.phar require zendframework/zftool:dev-master
  27. 27. Criando o projeto Blog $ Baixar o phpunit $ nano composer.json $ Adicionar a dependência do phpunit nos pacotes requeridos "require": { "php": ">=5.3.3", ..., ..., "phpunit/phpunit": "4.1.*" } $ php composer.phar update
  28. 28. Configurando o Banco de dados $ Configurando o Banco de dados $ global.php $ local.php $ /config/test.config.php
  29. 29. Criando o módulo Core $ cd ~/workspace/Blog $ php vendor/zendframework/zftool/zf.php create module core
  30. 30. Criando o módulo Admin $ php vendor/zendframework/zftool/zf.php create module core
  31. 31. Configurando os testes para o módulo admin $ mkdir -p module/Admin/tests/src/Admin $ gedit module/Admin/tests/Bootstrap.php $ gedit module/Admin/tests/phpunit.xml $ mkdir module/Admin/tests/src/Admin/Model $ mkdir module/Admin/data $ gedit module/Admin/data/test.data.php
  32. 32. Criando os testes da Model User, e após, a Model User; $ gedit module/Admin/tests/src/Admin/Model/UserTest.php $ Executar o teste $ php vendor/phpunit/phpunit/phpunit -c module/Admin/tests/phpunit.xml $ Criando a model User $ gedit module/Admin/src/Admin/Model/User.php $ Executar o teste novamente $ php vendor/phpunit/phpunit/phpunit -c module/Admin/tests/phpunit.xml
  33. 33. Criando os testes para o Controller Users, o Controller Users, seu Form e views; $ Criando os testes para o controller User $ gedit module/Admin/tests/src/Admin/Controller/UsersControllerTest.php $ php vendor/phpunit/phpunit/phpunit -c module/Admin/tests/phpunit.xml $ Criando o controller Users $ gedit module/Admin/src/Admin/Controller/UsersController.php $ Form User $ View
  34. 34. Utilizando Session $ Adicionando serviço de sessão e dependência para o serviço de autenticação $ module/Admin/module.conf.php
  35. 35. Criando um serviço de autenticação e seus testes; $ Teste do Serviço de autenticação $ Serviço de autenticação
  36. 36. Criando controller para Autenticação, form e testes; $ Form de login $ Teste AuthController $ AuthController $ Adicionar AuthController as rotas
  37. 37. Criando controller para Autenticação, form e testes; $ Form de login $ Teste AuthController $ AuthController $ Adicionar AuthController as rotas
  38. 38. Criando os testes da Model Categorie, e após, a Model Categorie $ Criando os testes para a model Categorie $ Criando a model Categorie
  39. 39. Criando os testes para o Controller Categories, o Controller Categories, seu Form e views $ Criando os testes para o CategoriesController $ Criando o Form Categorie $ Criando o CategoriesController $ Criando as visões do Categories
  40. 40. Criando os testes da Model Post, e após, a Model Post $ Criando os testes para a model Post $ Criando a model post $ Criando os testes para o post categories $ Criando a model post categories
  41. 41. Criando os testes para o Controller Posts, o Controller Posts, seu Form e views; $ Criando os Tests para o PostsController $ Criando o Form Post $ Criando o PostsController $ Criando as visões do Posts
  42. 42. Criando o módulo main $ php vendor/zendframework/zftool/zf.php create module main $ Copiar modulo.config.php do módulo admin e mudar onde estiver escrito admin para main $ Copiar estrutura de testes do module admin, inclusive o test.data.php $ mkdir module/Main/data $ cp -p module/Admin/data/test.data.php module/Main/data/test.data.php
  43. 43. Criando o IndexController do módulo Main, seu teste e exibindo os posts em sua view $ Criando o teste do index controller $ Criando o index controller $ Criando a visão e a partial de paginação
  44. 44. Criando os testes da Model Comment, e após, a Model Comment $ Criando os testes para a model Comment $ Criando a model comment
  45. 45. Criando os testes para o Controller Comments, o Controller Comments, seu Form e views; $ Criando os testes para o CommentsController $ Criando o form dos comentarios $ Criando o CommentsController $ Adicionando o comments no more do Index do main utilizando ajax
  46. 46. Definindo o módulo main como o principal $ Recortar do module.config.php do modulo application e colar no modulo main 'home' => array( 'type' => 'ZendMvcRouterHttpLiteral', 'options' => array( 'route' => '/', 'defaults' => array( 'controller' => 'MainControllerIndex', 'action' => 'index', ), ), ), $ Mover view auxiliares $ mv module/Application/ew/error/ module/Main/view/error $ mv module/Application/view/layout/ module/Main/view/layout
  47. 47. Definindo o módulo main como o principal $ Adicionar view manager no modulo.config.php do modulo main e deixar em branco o do modulo application 'view_manager' => array( 'display_not_found_reason' => true, 'display_exceptions' => true, 'doctype' => 'HTML5', 'not_found_template' => 'error/404', 'exception_template' => 'error/index', 'template_map' => array( 'layout/layout' => __DIR__ . '/../view/layout/layout.phtml', 'main/index/index' => __DIR__ . '/../view/main/index/index.phtml', 'error/404' => __DIR__ . '/../view/error/404.phtml', 'error/index' => __DIR__ . '/../view/error/index.phtml', ), $ Alterar layout
  48. 48. ViewHelper de sessão $ module/Core/src/Core/View/Helper/Session.php $ Adicionar helper no module.config.php do Modulo Core $ Criando menu de acordo com o perfil de usuário autenticado
  49. 49. Adicionar join com a entity user na query de posts no IndexController do módulo main $ module/Main/src/Main/Controller/IndexController.php
  50. 50. ACLs $ Adicionando listeners $ module/Admin/Module.php $ Adicionar teste authorize no service Auth $ Configurando roles, resources e privelegies no global.php
  51. 51. ACLs $ Construir às ACLs no arquivo moduleCoresrcCoreAclBuilder.php $ Adicionar o método authorize no Service AdminAuth.php $ Executar os testes $ Adicionar AuthController como rota padrão do modulo Admin
  52. 52. Referências $ Zend Framework 2 na prática; Minetto; 2012 $ http://framework.zend.com/manual $ Enrico Zimuel Senior Software Engineer, Zend Framework Core Team

×