Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fabyo

Zend Framework

Recommended Posts

Zend Framework - O Inicio

 

Para quem está começando agora leia o tutorial anterior:

 

<< Introdução

 

Legenda: ZF = Zend Framework

 

Bom ja existe varios tutoriais pela WEB explicando como baixar e como configurar o ZF, mas vou explicar do meu jeito

pois acredito que esta bem mais pratico, enxuto e profissional, vejo inumeros exemplos de sistemas em ZF com varias linhas a toa sendo que o mesmo poderia estar bem enxuto, e é isso que eu vou passar para você, como aprender a trabalhar com o ZF e como fazer um sistema bem feito e profissional, pois não adianta nada usar o ZF e continuar com as velhas gambiarras de sempre, ou usar o ZF mas não aproveitar 100% dos recursos que existe nele.

 

Baixe a ultima versão do ZF, site oficial:

 

http://framework.zend.com/

 

ultima versão do download até a data de hoje é a 1.5.1:

ZF 1.5.1

 

Documentação do ZF:

 

Manual

 

só uma breve descrição para entender melhor o manual e souber pesquisar, sempre os modulos vão chamar

Zend_NomeDoModulo, para achar o arquivo PHP correspondente é só seguir pelo nome, por exemplo:

 

Zend_DB: está localizado na pasta library/Zend/Db

Zend_Loader: está localizado na pasta library/Zend/Loader

 

na raiz da pasta Zend sempre tera o arquivo correspondente e a pasta as classes complementares com o mesmo nome:

 

Zend_DB: está localizado na pasta library/Zend/Db.php

Zend_Loader: está localizado na pasta library/Zend/Loader.php

 

baixando o ZF descompacte ele, e pegue só a pasta library.

 

crie os diretorios nessa sequencia como mostra na figura abaixo:

 

application
controllers
	plugins
models
views
	filters
	helpers
	scripts
includes
library -> ZF
logs
public
css
images
js

 

diretorios.JPG

 

se tiverem duvidas sobre os diretorios e pastas não se preocupem, vou deixar em anexo um sistema de exemplo para download.

 

explicando como funciona os diretorios:

 

application// vem do conceito MVC de:

models = M

views = V

controllers = C

 

Models: é onde ficam suas classes para manipulação com o banco de dados em geral

numa aplicação MVC e manipulação estilo Doctrine, não se usa select, insert updades de nenhuma forma no seu sistema

tudo isso fica interno voce só chama a classe e usa os metodos por exemplo: $usuario->insert($data), $usuario->delete($id), como percebeu, não usei "INSERT INTO TABELA (campo) VALUES ('$valor') e nem

DELETE FROM TABELE WHERE id = $id

 

é essa a ideia do Doctrine, e o Models é separar a parte de conexão e manipulação da parte visual

 

Views: é a parte visual, onde voce tera suas paginas templates, onde poderá fazer ou inventar inumeros jeitos de manipular isso, por exemplo pode usar o proprio sistema de templates do ZF, ou o Zend_Layout, ou smartytemplates ou o que voce quiser fazer ou criar, o ZF é super configuravel.

mais pra frente irei explicar sobre filters e helpers, na pasta scripts que irao ficar suas paginas(Templates)

por exemplo dentro da scripts voce tera uma pasta index, que representara seu template index

 

o esquema de template padrão do ZF é o arquivo.phtml, voce pode mudar a extensão para qualquer outra, tambem é configuravel via ZF, mas prefiro deixar assim mesmo, porque é só um nome, não importa se é phtml ou tpl ira rodar do mesmo jeito

 

Controllers: Nessa pasta que terão seus scripts responsaveis pelo sistema, onde terá validação, recebimento de dados post, get, filtros, etc..., por isso chama controller, onde voce controla todo sistema.

 

plugins, depois explicarei com mais detalhes sobre a pasta plugins, e o motivo da pasta plugins estar dentro da controller e porque o plugin tambem esta controlando seu sistema.

 

includes é onde voce coloca seus arquivos, por exemplo: config_db.php, config.ini, config.xml etc...

dica não usem config.php, porque ira dar conflito pois o ZF tambem tem um arquivo com o mesmo nome, e o motivo do conflito é o autoload das classes.

 

logs pasta para salvar arquivos de logs

 

public pasta para voce ter seus arquivos do site por exemplo css, js, imagens, flash etc...

 

agora vamos ao exemplo, vamos só fazer rodar o ZF

 

criaremos nosso index.php "padrao para todos os projetos"

 

index.php

 

<?php
if(version_compare(phpversion(), 5) === '-1'){
die('Versão do PHP não compativel');
}

define('DS', DIRECTORY_SEPARATOR);
define('PS', PATH_SEPARATOR);
define('BASEPATH', getcwd() . DS);

set_include_path('.'
. PS . BASEPATH . 'library' . DS
. PS . BASEPATH . 'includes' . DS
. PS . BASEPATH . 'application' . DS . 'controllers' . DS . 'plugins' . DS	
. PS . BASEPATH . 'application' . DS . 'models' . DS
. PS . get_include_path());

require 'library/Zend/Loader.php';
Zend_Loader::registerAutoload(); 

Zend_Controller_Front::getInstance()
->throwExceptions(TRUE)	
->setControllerDirectory(BASEPATH . 'application' . DS . 'controllers' . DS)
->dispatch();

 

explicando o index.php

 

require 'library/Zend/Loader.php';//adiciono o arquivo, essa classe é responsavel para incluir e estanciar o resto das outras classes pelo metodo Autoload, vejam mais detalhes:

 

http://br2.php.net/manual/pt_BR/language.oop5.autoload.php

 

aqui esta parte da magica, voce deixa seu sistema muito mais enxuto, inumeros tutoriais do ZF pela WEB não usam essa ideia e acabam enchendo as paginas de tantos "require_once"

 

http://akrabat.com/wp-content/uploads/gett...amework_142.pdf

 

reparem que ele sempre ta usando Zend_Loader::loadClass(‘nome da classe’);

 

se tivessem usando o Zend_Loader::registerAutoload(); não precisaria nada disso.

 

Zend_Controller_Front::getInstance()// estancio a classe principal que vai dar inicio no sistema
->throwExceptions(TRUE)	// defino se ira mostrar erros para o usuario ou nao
->setControllerDirectory(BASEPATH . 'application' . DS . 'controllers' . DS)// aqui mostro qual é meu diretorio controller
->dispatch();// inicio o sistema.

 

aqui tambem outro exemplo, nos tutoriais por ai ate no manual eles criam uma variavel para o controller assim:

 

$front = Zend_Controller_Front::getInstance();

como podem ver no meu exemplo não precisei criar a variavel.

 

para entenderem melhor leiam:

 

http://framework.zend.com/manual/en/zend.controller.html

 

outra coisa tenha certeza que seu .htaccess esteja funcionando, depois não venha postar que voce testou e não esta funcionando.

 

rodando o sistema por padrao ele ja começara no arquivo IndexController.php

 

IndexController.php:

 

<?php if(!defined("BASEPATH")) exit();

class IndexController extends Zend_Controller_Action
{
public function indexAction()
{	

}
}

 

é assim mesmo não está errado e nem esta faltando fechar a tag php ?>, não se deve fechar o arquivo php com ?>, todas suas paginas deverão estar iguais a essa

isso é para ajudar os sistemas de debuggers.

 

como este é só um exemplo bem simples não tem o que comentar agora, peguem o exemplo em anexo e testem

qualquer duvida só postarem, no proximo tutoriail, postarei mais exemplos, e mostrarei bem como funciona os controllers, views, e Layouts e templates

 

e logo em breve postarei exemplos completos de sistema de cadastro e logins, etc...

 

 

Zend_Inicio.zip

 

OBS: Pasta library vazia, para deixar o arquivo menor.

 

Proximo tutorial:

 

>> Exemplos Basicos I

Compartilhar este post


Link para o post
Compartilhar em outros sites

muito legal sua iniciativa, sou das pessoas que nunca utilizou nenhum framework, e devido a correria agora vou precisar trabalhar com um. Espero que seus tutoriais me ajudem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fabyo, D+ seu tutorial, está bem claro, objetivo e sem complicações, de como devemos montar a estrutura para

começarmos a utilizar o Zend Framework.

 

Pessoal, para quem já percebeu ou quem ainda não viu dentro do arquivo: index.phtml

que está em:

 

application\views\scripts\index
tem um echo:

 

<?php echo $this->escape($this->Usuario);?>

provavelmente não irá acontecer nada mesmo, pois no

método indexAction() está vazio,

localizado em:

 

application\controllers\IndexController.php
só para vocês terem uma idéia pode colocar assim como "Exemplo":

 

public function indexAction()
{	
	$this->view->Usuario = "Ramires";	
}
com isso eu faço referencia a $this->Usuario que está na View.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E lá vou eu :D/>

 

Então, até agora tudo bem, entendi perfeitamente o tuto assima, legal mesmo eim, vamos nessa hehe.

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Legal demais e parabéns pela iniciativa.

Acompanhando uns fórums, vi que existem planos pra traduzir a documentação do ZF para português, inclusive temos poucos capitulos jah traduzidos.

 

Poderia ser criado um novo sub fórum aqui para discussões sobre Frameworks PHP ou então um sub-fórum para o ZF.

 

Até mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

grande Fábio.

 

já que disponibilizou a 'hierarquia' a todos, porque baixar os arquivos do ZF?

 

poderia explicar melhor?

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fabyo,

acho que o Sr.silva pensa que todas as classes do Zend já estão no seu exemplo, que é suficiente fazer download apenas

do seu exemplo para funcionar, bom isso que eu entendi.

 

É isso Sr.silva ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa!

 

a minha dúvida é a seguinte.

 

pra que baixar o zf, já que será utilizado a hierarquia que o fabyo disponibilizou ?

 

a principio eu ia fazer dentro do ZF mesmo..só depois vi que algo estava diferente.

 

dai baixei os arquivos criados pelo fabyo.

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas sem o ZF nao da pra você nem testar o sistema, o ZF é um pacote de classes, o resto é só o padrao de diretorios

 

só pra você ter ideia a pasta ZF descompactada tem 16 MB de arquivos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

hum..entendi.

 

então nós utilizaremos a pasta que você criou, 'pegando' alguns arquivos do ZF?

 

grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sr. Silva, você viu o Tutorial de hoje, falando sobre Templates, da uma confirida...

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiquei com dúvida no seguinte:

 

onde é feito o redirecionamento para o 'index' dentro de view?

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa fabyo.

 

tá tenso né velhinho..

 

a dúvida é nesse artigo, já que não sei como o ZF faz a 'ligação'..digamos assim, ao arquivo dentro de view/script/index.

 

pelo que tava tentando entender.. :D/>

 

tem alguma coisa a ver com essa linha.

 

Zend_Controller_Front::getInstance()// estancio a classe principal que vai dar inicio no sistema

resumindo:

 

- como que ao digitar: site.com.br, o ZF já imprime nesse exemplo a palavra INDEX ??

 

- onde o ZF faz isso? carregar o index dentro da pasta VIEW?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.