Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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:
Com certeza e voce ja vai estar começando com um otimo framework
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\indextem 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.phpsó 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.Parabens David é isso mesmo = )
E lá vou eu :D/>
Então, até agora tudo bem, entendi perfeitamente o tuto assima, legal mesmo eim, vamos nessa hehe.
Abraço.
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
Ja dei essa ideia e será criado um subforum aqui só pra tratar de Zend
grande Fábio.
já que disponibilizou a 'hierarquia' a todos, porque baixar os arquivos do ZF?
poderia explicar melhor?
[]´s
Nao entendi sua pergunta
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 ?
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
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.
hum..entendi.
então nós utilizaremos a pasta que você criou, 'pegando' alguns arquivos do ZF?
grato.
Baixando o ZF e pegando a pasta library completa
ok!
desculpe, pelas perguntas 'idiotas' !!
Sr. Silva, você viu o Tutorial de hoje, falando sobre Templates, da uma confirida...
fiquei com dúvida no seguinte:
onde é feito o redirecionamento para o 'index' dentro de view?
[]´s
Nao entendi sua duvida, como assim?
voce esta testando os exemplos?, se sim qual exemplo voce ficou com duvida?
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:
é impresso "INDEX", porque esse é o conteudo da pagina index.phtml
e sim é a classe controller que faz essa ligação.
só uma coisa voce precisa se preocupar em como usaro ZF e nao como ele funciona, porque se for esse o caso voce tem que entender muito de programação OOP, e PHP, para estudar o ZF
mas se quer apenas entender o basico , é essa ideia que ja passei nos tutoriais, voce tem um padrao MVC
dai os templates ficam em paginas separadas, e o sistema junta tudo e exibe ela para o usuario
Será que podem me ajudar a configurar meu servidor apache, é o 2.2.8, estou com windows xp, o servidor apache está acessando o arquivo .htaccess, mas no log está dando a mensagem de erro "RewriteEngine not allowed here", pelo que entendi não está habilitando o RewriteEngine, o meu .htaccess está assim:
RewriteEngine on
RewriteRule .* index.php
php_flag magic_quotes_gpc off
php_flag register_globals off
Tem que configurar no apache
httpd.conf
descomente essa linha:
LoadModule rewrite_module modules/mod_rewrite.so
>
Tem que configurar no apache
httpd.conf
descomente essa linha:
LoadModule rewrite_module modules/mod_rewrite.so
É como eu disse, o htaccess está sendo chamado, no apache está configurado, descomentei a linha especificada, veja :
LoadModule rewrite_module modules/mod_rewrite.so
...
<Directory />
Options FollowSymLinks Includes
AllowOverride All
</Directory>Nao entendi, como assim: "É como eu disse" ?
voce precisava descomentar essa linha senao nao tinha como o apache funcionar com o .htacess e depois disso reiniciar o apache para essa função nova funcionar.
>
Nao entendi, como assim: "É como eu disse" ?
voce precisava descomentar essa linha senao nao tinha como o apache funcionar com o .htacess e depois disso reiniciar o apache para essa função nova funcionar.
Citei que é como eu disse porque na primeiro post que escrevi disse que o htaccess está sendo chamado, o apache está configurado como citei no post anterior,
LoadModule rewrite_module modules/mod_rewrite.so
...
<Directory />
Options FollowSymLinks Includes
AllowOverride All
</Directory>
o apache foi reiniciado, e o erro persiste:
"RewriteEngine not allowed here"
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.