Zend Framework 2 - Desenvolvimento Ágil Competente

31
um tour pelo mundo ágil Zend Framework 2 desenvolvimento web ágil competente Por Michael Cardoso | [email protected]

Transcript of Zend Framework 2 - Desenvolvimento Ágil Competente

Page 1: Zend Framework 2 - Desenvolvimento Ágil Competente

um tour pelo mundo ágil

Zend Framework 2 desenvolvimento web ágil competente

Por Michael Cardoso | [email protected]

Page 2: Zend Framework 2 - Desenvolvimento Ágil Competente

Como Aprenderemos

Um passo para cada etapa do caminho

Revisão e Conceitos

Ferramentas e Instalação

Prática

Page 3: Zend Framework 2 - Desenvolvimento Ágil Competente

Revisão e conceitos

O que precisamos saber antes de ir a caçada

Page 4: Zend Framework 2 - Desenvolvimento Ágil Competente

é um framework para:

• Aplicações Web de código aberto

• Fortemente orientado a objetos

(encapsulado)

• Implementado para roda a partir do

PHP 5.3

• O ZF2 foi lançado em 2012

• Modular

• Extensível

• Grande performance

• Seguro

• Possui uma comunidade ativa de

desenvolvimento

• Suportado para grandes aplicações

O Zend Framework 2

Page 5: Zend Framework 2 - Desenvolvimento Ágil Competente

O ZF 2 é um framework de alto nível, possibilitando execução de projetos de grande escalabilidade e desempenho. Para isso, a linha de aprendizagem exige um profissional que se aprimore sempre usufruindo do seu PowerUser.

O que é preciso saber para programar com o Zend Framework 2?

Lógica de Programação

PHP Orientado Objeto

Namespaces

Conhecimento de um SGBD

Ferramentas Auxiliares

Page 6: Zend Framework 2 - Desenvolvimento Ágil Competente

Namespaces

• O que é?

– Possibilita o agrupamento de Classes, interfaces, funções e constantes,

– Evita o conflito entre seus nomes, atuando como um encapsulador para estes itens,

Page 7: Zend Framework 2 - Desenvolvimento Ágil Competente

Namespaces

• O que é?

– Seu funcionamento é equivalente ao de diretórios em sistemas operacionais, onde dois arquivos de mesmo nome não podem existir em um único diretório, mas nada impede a existência de dois arquivos de mesmo nome localizados em diretórios distintos, este mesmo princípio é aplicado no PHP através de namespaces.

Page 8: Zend Framework 2 - Desenvolvimento Ágil Competente

Namespaces

• Conexao.php

<?php namespace MeuProjeto; function connect() { // Faz a sua conexão com o banco de dados }

?>

<?php // Inclui o arquivo com a função include("conexao.php"); // Chama a função dentro do namespace MeuProjeto/connect(); ?>

• Index.php

Page 9: Zend Framework 2 - Desenvolvimento Ágil Competente

Namespaces

• Uso de classe com Namespaces

// Example - Namespace scope namespace Project\Model; class User {} $var = new User; // Resultado: Project\Model\User

// Example - Global scope class User {} $var = new User; // Resultado: User

• Uso de classe sem Namespaces (global)

Page 10: Zend Framework 2 - Desenvolvimento Ágil Competente

Namespaces

• Aliasing / Importing – Uma característica importante ao trabalhar com namespaces é a

possibilidade de importar e atribuir apelidos;

– A palavra-chave use é utilizada para importar classes, interfaces ou namespaces através de seus nomes;

*não é possível importar funções ou constantes.

– Para adicionar apelidos, utilizamos a palavra-chave as, escolhendo um nome mais acessível, ou seja, um apelido, existem duas maneiras de realizar importações:

use Project\Model\User; // É o mesmo que: use Project\Model\User as User; $var = new User; // Resultado: Project\Model\User

Page 11: Zend Framework 2 - Desenvolvimento Ágil Competente

Namespaces

• Aliasing / Importing – O PHP oferece um atalho para realizar múltiplas importações na

mesma linha, onde cada importação é separada através de uma virgula.

use Project\Model\User, Project\Model\Post as Article; $var = new Article; // Resultado: Project\Model\Post

Page 12: Zend Framework 2 - Desenvolvimento Ágil Competente

Arq

uit

etu

ra d

o Z

F 2

Entendo o paradigma MVC Model, View, Controller

Cada um assume sua tarefa , demando, respondo e exibindo ao usuário o resultado do que foi requisita.

Page 13: Zend Framework 2 - Desenvolvimento Ágil Competente

Arq

uit

etu

ra d

o Z

F 2

Entendo o paradigma MVC reusabilidade de código e separação de conceitos

• Model (modelo) – consiste nos dados da aplicação, regras de negócios, lógica e

funções;

• View (visão) – pode ser qualquer saída de representação dos dados, como

uma tabela ou um diagrama

• Controller (controlador ) – faz a mediação da entrada, convertendo-a em comandos

para o modelo ou visão

Page 14: Zend Framework 2 - Desenvolvimento Ágil Competente

Arq

uit

etu

ra d

o Z

F 2

Entendo o paradigma MVC reusabilidade de código e separação de conceitos

1. Usuário faz uma requisição clicando em um link, enviando um formulário, etc.

2. Controller recebe essa requisição.

3. Controller solicita informações ao Model.

4. Model retorna para o Controller os dados solicitados.

5. Controller envia informações para View.

6. View solicita dados ao Model.

7. Model retorna para View os dados solicitados.

8. A página é exibida para o usuário.

Page 15: Zend Framework 2 - Desenvolvimento Ágil Competente

Ferramentas e instalação

O que é preciso e como instalar

Page 16: Zend Framework 2 - Desenvolvimento Ágil Competente

WAMP Server

• O que é?

– É usado para instalar rapidamente no computador os softwares PHP 5, MySQL e Apache, disponibilizando suporte ao uso de scripts PHP localmente no Windows.

• Apache • PHP • SQLBuddy • MySQL

• PhpMyadmin • XDebug • webGrind

Page 17: Zend Framework 2 - Desenvolvimento Ágil Competente

Eclipse

• O que é?

– Eclipse é um IDE para desenvolvimento Java, porém suporta várias outras linguagens a partir de plugins como C/C++,PHP,ColdFusion, Python, Scala e plataforma Android.

– Para desenvolver em Zend PHP, temos que baixar a perspectiva PHP.

Page 18: Zend Framework 2 - Desenvolvimento Ágil Competente

GIT

• O que é? – É um sistema de controle de versão distribuído e um sistema de

gerenciamento de código fonte, com ênfase em velocidade.

– Foi inicialmente projetado e desenvolvido por Linus Torvalds para o desenvolvimento do kernel Linux, mas foi adotado por muitos outros projetos.

– Cada diretório de trabalho do Git é um repositório com um histórico completo e habilidade total de acompanhamento das revisões, não dependente de acesso a uma rede ou a um servidor central.

Page 19: Zend Framework 2 - Desenvolvimento Ágil Competente

Composer

• O que é?

– O Composer é um gerenciador de dependências para o PHP. Com ele você define a lista de bibliotecas (e versões) das quais o seu projeto depende, e ele cuida da instalação, organização e “inclusão”.

Page 20: Zend Framework 2 - Desenvolvimento Ágil Competente

“Instalação” do ZF2

• Vamos instalar o Zend Skeleton

Page 21: Zend Framework 2 - Desenvolvimento Ágil Competente

Skeleton?

Page 22: Zend Framework 2 - Desenvolvimento Ágil Competente

“Instalação” do ZF2

• Instalando o Zend Skeleton

1. Abra o GitBash

2. Entra na pasta do projeto c:/wamp/www

Page 23: Zend Framework 2 - Desenvolvimento Ágil Competente

“Instalação” do ZF2

• Instalando o Zend Skeleton

1. Abra o Executar > cmd

2. Entra na pasta do projeto (cd) c:/wamp/www

Page 24: Zend Framework 2 - Desenvolvimento Ágil Competente

Instalação do ZF2

• Instalando o Zend Skeleton 3. Entre no site:

https://github.com/zendframework/ZendSkeletonApplication

4. Verifique logo abaixo os procedimentos de instalação na própria página do diretório

Opção 2

Page 25: Zend Framework 2 - Desenvolvimento Ágil Competente

Instalação do ZF2

• Instalando o Zend Skeleton

5. Após digitar os comandos de clonagem do diretório essa deve ser a mensagem de retorno “done”.

Page 26: Zend Framework 2 - Desenvolvimento Ágil Competente

Instalação do ZF2

• Atualizando dependência do composer no Zend Skeleton

1. Renomeia a pasta da aplicação para “sinform”

2. Entre dentro da pasta da aplicação via GitBash -> cd sinform/

3. Digite o comando para atualizar o composer -> php composer.phar self-update

4. Digite o comando para instalar as atualizações -> php composer.phar install

* Path do windows

Page 27: Zend Framework 2 - Desenvolvimento Ágil Competente

Instalação do ZF2

• Identificando o esqueleto do projeto (Skeleton)

– Acessando o diretório raiz, além dos arquivos do composer e do autoloader, temos os seguintes diretórios: • config: aqui ficam configurações da aplicação como um todo;

• data: local para armazenar os seus arquivos que não fazem parte do código da aplicação, como diagramas, dumps do banco de dados;

• module: O diretório onde ficam os módulos de sua aplicação;

• public: o Zend Framework trabalha com FrontController, ou seja, tudo que você acessar, estará acessando através de um caminho apenas. As imagens, arquivos CSS e JS entre outros devem ficar aqui neste diretório;

• vendor: diretório dedicado à bibliotecas de terceiros;

Page 28: Zend Framework 2 - Desenvolvimento Ágil Competente

Instalação do ZF2

• Configurando o host no Windows

1. Abra o caminho abaixo no Explorer c:/windows/system32/drivers/etc

2. Abra o arquivo host com o notepad (Bloco de Notas)

3. Adicione a linha 127.0.0.1 sinform

4. Salve o arquivo e feche

Page 29: Zend Framework 2 - Desenvolvimento Ágil Competente

Instalação do ZF2

• Configurando o VirtualHost no Apache (WampS) 1. Ative o rewrite_modulo no apache

2. No arquivo httpd.conf do Apache, descomete a linha: # Virtual hosts #Virtual hostsInclude conf/extra/httpd-vhosts.conf

Page 30: Zend Framework 2 - Desenvolvimento Ágil Competente

Instalação do ZF2

• Configurando o VirtualHost no Apache (WampS)

3. Abra o arquivo httpd-vhost.conf e insira as seguintes linhas C:\wamp\bin\apache\apache2.4.9\conf

4. Reinicie seu servidor web, caso esteja online, e acesso o endereço http://sinform

<VirtualHost *:80> ServerName sinform DocumentRoot C:/wamp/www/sinform/public SetEnv APPLICATION_ENV "development" <Directory C:/wamp/www/sinform/public> DirectoryIndex index.php AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>

Page 31: Zend Framework 2 - Desenvolvimento Ágil Competente

Instalação do ZF2

Essa é a nossa tela do sucesso!

twitter.com/MichaelHCardoso