Zend Framework
Zend Framework - O Inicio
Para quem está começando agora leia o tutorial anterior:
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:
Documentação do ZF:
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
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...
OBS: Pasta library vazia, para deixar o arquivo menor.
Proximo tutorial:
Discussão (58)
Carregando comentários...