Skip to content


Zend Framework para um PHP mais poderoso

Esse tutorial tem como objetivo mostrar para as pessoas que nunca viram nada sobre o ZF(Zend Framework) e estão querendo saber como ele funciona.

Quem já ouviu falar do Zend Framework? Resumidamente a Zend é uma empresa responsável pela manutenção e desenvolvimento do PHP.
A engine de orientação a objetos do php5 foi totalmente reescrita pelo pessoal da Zend.

Mas o que seria um framework?

O framework é um conjunto de classes com objetivo de reutilização de um design, provendo um guia para uma solução de arquitetura em um domínio específico de software. (Wikipedia)
Pode-se dizer que ele seria um conjunto de bibliotecas específicas.

Falando nossa lingua, o framework é um conjuntão de bibliotecas que ajuda em nosso trabalho do dia a dia, e nos trabalhos mais complicados também.

Esse artigo utiliza a versão 0.8 do framework. (dia 28/02/07)
[atualizado]
Versão atual: 1.0.2 (01/09/07)
[/atualizado]

Entendendo o Zend Framework

O Zend Framework segue o padrão MVC - Model View Controller. É um padrão de arquitetura onde separa o GUI, templates, etc(View) da lógica(Model) e do controle(Controller).
Então nele você pode usar a mesma lógica e/ou controle em diversas interfaçes com o usuário.

Usando o Zend Framework

Agora vamos arrumar a estrutura de diretórios necessária para o correto funcionamento do ZF.

diretórios

PS: a pasta ZF-tutorial fica dentro do DocumentRoot, que é onde fica suas páginas no servidor(padrão do apache: htdocs/ ou /var/www/).

No caso a pasta controllers, models e views estão dentro da pasta app(application, nome sugestivo). publico é onde vai suas outras coisas normais como imagens e css, js e assim por diante. E lib é a pasta onde vai ficar o ZF.

Entre na pasta onde você descompactou o arquivo tarball(.tar.gz), depois entre na pasta library e copie a pasta zend para a sua pasta lib(na ZF-tutorial) do seu sistema. Talvez você precise mudar(ou copiar) como root, aqui no exemplo vou usar sem o root.

cd ~/ZendFramework-1.0.1/library
cp -Rfv Zend/ documentRoot_do_apache/ZF-tutorial/lib/

Aí depois no diretório lib irá ter lib/Zend, certo?

lib/Zend

Configurando o Apache

Primeira coisa que temos a fazer é abilitar o módulo rewrite do apache.
Edite o arquivo de configuração do apache, httpd.conf.
Descomente(tirando o #) a linha onde está escrito:

LoadModule rewrite_module modules/mod_rewrite.so
AddModule mod_rewrite.c

Defina o AccessFileName (pode ser no final do arquivo):

AccessFileName .htaccess

Setar a opção AllowOverride como All.

Trocar as linhas abaixo:

#<Directory />
# Options Indexes FollowSymLinks
# AllowOverride None
#</Directory>

por:

<directory>
Options FollowSymLinks Includes
AllowOverride All
</directory>

Criando o Bootstrapping

O controller do ZF, Zend_Controller, é feito para suportar websites com urls limpas.
Então, todas as requisições precisam ser feitas diretamente em um arquivo index.php, essa prática é conhecida como bootstrapping.
E para isso precisamos criar alguns arquivos .htaccess.

ZF-tutorial/.htaccess

RewriteEngine on
RewriteRule .* index.php
php_flag magic_quotes_gpc off
php_flag register_globals off

Essa RewriteRule quer dizer que para qualquer coisa escrita ele(apache) irá redirecionar para o index.php(que fica dentro do ZF-tutorial, calma que ainda vamos cria-lo). :)
Alí também setamos algumas configurações do PHP.ini. Essas configurações provavelmente já estão setadas como padrão, mas é bom ter certeza né. Elas só vão funcionar se estiver habilitado o mod_php no httpd.conf do apache.

Agora vamos setar nosso .htaccess na pasta público. Lá estará os arquivos JavaScript, CSS, imagens e assim por diante. Então vamos habilitar tudo por lá.

ZF-tutorial/publico/.htaccess

RewriteEngine off

Agora na pasta app e no lib não queremos que nenhum intruso acesse, porque lá estão nossos arquivos preciosos. :P
ZF-tutorial/app/.htaccess

deny from all

ZF-tutorial/lib/.htaccess

deny from all

Esse esquema de bootstrapping é recomendação dos desenvolvedores do ZF, ok? Motivo de segurança, sabe como é né.

Criando o nosso index.php(bootstrap file)

Agora vamos criar nossa index.php na pasta ZF-tutorial.
ZF-tutorial/index.php

<?php
error_reporting(E_ALL|E_STRICT); // para mostrar os erros, apenas nos testes(precisa estar setado no PHP.ini)
 
// Seta o timezone pra são paulo (&gt;=PHP 5.1)
setlocale (LC_ALL, 'pt_BR');
date_default_timezone_set('America/Sao_Paulo');
 
/* Seta include path para o funcionamento correto do framework ***OBRIGATÓRIO*** */
set_include_path('.'.PATH_SEPARATOR.'./lib'
.PATH_SEPARATOR.'./app/models/' //facilitar depois ao loadar as nossos modelos
.PATH_SEPARATOR.get_include_path());
 
/* Necessário para loadar qualquer outra classe do framework ***OBRIGATÓRIO*** */
include "Zend/Loader.php";
 
//loada o controller front
Zend_Loader::loadClass('Zend_Controller_Front');
 
/*
 Essa classe se encontra em Zend/Controller/Front.php
 Pode ser loadado diretamente pelo nome se preferir
 
 Para começar nós precisamos loadar primeiro o front controller
 Ele faz um controle automático para detectar a base URL e fazer o redirecionamento correto
 */
$controlador = Zend_Controller_Front::getInstance();
$controlador->throwExceptions(true); // mostrar excessões(apenas para testes)
$controlador->setControllerDirectory('./app/controllers'); // seta diretório com nossos controllers
 
//Roda o sistema
$controlador->dispatch();
 
//sem fechar a tag php

Note que agente não fecha a tag php para nos previnir de erros usando o header(), no caso de espaços em branco adicionais depois do ?>.

Agora na pasta controllers vamos criar um IndexController.php. Esse controller vai entrar em ação sempre que o index for chamado.
Para entender como funciona, precisamos saber como o Zend_Controller_Front trabalha.
O ZF usa um sistema de Controllers(Controladores) e Actions(Ações). E isso é setado diretamente na url(lembra do bootstrapping?). Como?
Usando o nosso exemplo, no formato http://localhost/ZF-tutorial/index/teste o index é o Controller e o teste é o Action. Outro exemplo, http://localhost/ZF-tutorial/foo/bar o foo é o Controller e o bar é o Action.
E quando você não coloca nada? Exemplo, http://localhost/ZF-tutorial/ o Zend_Controller_Front considera como index o Controller e index a Action.
O que vem depois é parâmetro, mas isso é assunto pra depois :P

Vamos fazer nosso IndexController então
ZF-tutorial/app/controllers/IndexController.php

<?php
class IndexController extends Zend_Controller_Action
{
  public function indexAction()
  {
    $this->view->titulo = 'Primeiro Tutorial de Zend Framework';
    $this->view->detalhe = 'Olá Mundo!';
  }
}

Atenção: Sempre o controller deve levar esse padrão NomeController.php e a classe com o mesmo nome do arquivo. A primeira letra sempre em maiúsculo e o resto minúsculo.
Já os Actions também deve levar esse padrão nomeAction(), sempre minúsculo.

Mas se você for rodar o sistema agora, vai perceber que vai dar uma excpetion gigantesca aí, certo?
Ela está falando que nós não temos o viewer para o index action do index controller.

Para criar, precisamos acessar a pasta scripts que está no ZF-tutorial/views/. Lá vamos criar uma pasta para cada Controller nosso, no nosso caso iremos criar uma pasta chamada index(por causa do IndexController). Todos os templates para o IndexController devem estar nessa pasta. O mais legal é que o nome do template leva o nome da action.
Calma, vou explicar: Por padrão cada action você pode ter um template ou não, mas se a action for tem um template para ela, então o template deve levar o mesmo nome da action. Por exemplo index.phtml(extenção do template) é o viewer do indexAction(), sacaram?

Na prática agora:

cd documentRoot_do_apache/ZF-tutorial/app/views/scripts
mkdir index

Agora nós temos que criar o index.phtml
ZF-tutorial/app/views/scripts/index/index.phtml

&lt;html&gt;
&lt;head&gt;
  &lt;title&gt;&lt;?php echo $this-&gt;escape($this-&gt;titulo); ?&gt;&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;?php echo $this-&gt;escape($this-&gt;detalhe); ?&gt;
&lt;/body&gt;
&lt;/html&gt;

é recomendável que usemos o escape para escapar tags html.

Agora vamos testar nossa aplicação.
Acesse o http://localhost/ZF-tutorial e depois tente http://localhost/ZF-tutorial/index/index
Você vai perceber que deu no mesmo.

Tarefinha, de leve

Agora deixo uma tarefa para vocês: Criar um zfAction(), no IndexController, com seu respectivo viewer. Após criado, acessem http://localhost/ZF-tutorial/index/zf e vejam o que aconte!

Conclusões

Apesar desse tutorial mostrar de maneira simples como funciona o Zend Framework, podemos perceber como o Zend Frameowork é facil de usar e ao mesmo tempo é poderoso.
Para um maior aprendizado, irei postar um novo tutorial com muito mais recursos do ZF.

Por enquanto eu recomendo um tutorial muito bom(desenvolvedor do ZF), eu me baseei no tutorial dele, e tabmém usem bastante o manual.

Acesse a página de tutoriais do Zend Framework

Cya later!!

Posted in PHP, Tutoriais, Zend Framework.

Tagged with , .


52 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. Igor Escobar says

    Boa abordagem Felipe ;)
    Parabens.

  2. hlegius says

    Realmente um excelente abordagem!!
    Parabéns! Assim que me sobrar um tempin vou dar uma testada nesses exemplos!

  3. Marc Abillama says

    Felipe! Muito interessante o tutorial! Só uma nota! o ZendFramework na data em que este foi escrito (28/02) ja estava na versão 0.8 com a inclusão de vários módulos saídos do incubator.

    A explicação foi bem abordada! Para quem tiver interesse, existe também outro tutorial muito bom:
    http://akrabat.com/zend-framework-tutorial/

    Esse enfoca bem as utilidades e propósitos do MVC! Pena que não foi atualizado para releases mais recentes do ZF (ainda está na 0.6).

    Grande abraço e sucesso!

  4. Rafael Merlin says

    Excelente texto!!!!! muito bom isso, pois escuto muito de várias pessoas que o PHP é uma linguagem pobre e sem muitos recursos. Acabo sempre discutindo com as pessoas tentando defender a causa, tentando mostrar que o PHP pode sim se comparar ao Java, .Net e que possui quase que os mesmos recursos e sendo executado com maior velocidade. PHP não é somente uma linguagem de script para fazer sites com enquetes, newsletters e coisas assim.
    Parabéns

  5. Felipe Tonello says

    Marc Abillama,
    Realmente acabou de sair a versão mais nova(0.8) hehehe e nem percebi. Valeu pela dica!
    Mas continua mesma coisa pelo menos o que abordamos nesse tutorial.

    Com relação ao MVC, pelo menos no manual e em tutoriais que vi aí pela internet(que são poucos) eles enfocam o MVC ainda sim. Essa é o design deles para esse framework.

    Obrigado

  6. André Wolff says

    Oi Felipe,

    Estamos organizando em Sao Paulo, em julho, um evento de Frameworks de desenvolvimento Web em PHP. Contaremos com palestra de Cake e Symphony e gostaria que você apresentasse o Zend.

    Por favor entre em contato para eu poder passar mais informações ! Tentei contato pelo gmail, sem sucesso !

    Atenciosamente,

    Andre'

  7. Goldoy says

    você está de parabens
    muito bem organizado

    gostaria de uma pequena ajuda
    pois quando eu colocar o arquivo .htaccess
    ta dando um erro na hora q eu acesso
    diz que foi cofigurado errado o apache
    conto com sua ajuda

  8. Felipe Tonello says

    então... você configurou certo o httpd.conf ?

  9. Duzaoum says

    Olá! Show de bola seu tutorial.

    Fiz o passo-a-passo usando a versão 1.0.1 do ZendFramework e não estava localizando a classe Zend. Funcionou com uma pequena correção na linha 17 do script ZF-tutorial/index.php

    Zend_Loader::loadClass('Zend_Controller_Front');

  10. Felipe Tonello says

    Ihhh é verdade mesmo hehehe

    Obrigado pelo comentário

  11. Bruno Henrique says

    Bom,

    Eu tava seguindo o tutorial sobre ZF na página do Felipe Tonello - http://www.felipetonello.com/blog/2007/02/28/zend-framework-para-um-php-mais-poderoso/

    e um parte do tutorial ele pedia pra descomentar as seguintes linhas no httpd.conf:

    1.
    LoadModule rewrite_module modules/mod_rewrite.so
    2.
    AddModule mod_rewrite.c

    Porém a segunda linha AddModule mod_rewrite.c ,não existe e depois que eu tento adiciona-la
    o meu servidor apache não starta mais.

    E outro erro que está acontecendo é no arquivo Registry.php na seguinte função:
    protected static function init()
    {
    // está acontecendo o seguinte erro: "')' expected in function call (self)."
    self::setInstance(new self::$_registryClassName());
    }

    Não sei mais o que fazer pra tentar resolver esse problema.

    Desde já agradeço,

  12. Tiago de Souza says

    Tudo muito Show ,
    ,mas sobre o modo rewrite : os hosts em uso hoje constumam usar essa connfiguração ?
    estava usando host free e queria testar o zend neles !!!!

  13. Bruno Henrique says

    Não eu to trabalhando localmente por enquanto!

    aí num ta funcionando!

  14. Felipe Tonello says

    Sobre o "AddModule mod_rewrite.c" se está dando erro, apenas não adicione esta linha no httpd.conf

    Sobre o Registry.. como está seu código? você está xamando estaticamente o registry?

  15. Bruno Henrique says

    Quando eu coloco ZF na pasta Lib do meu projeto, e como estou utilizando o eclipse...quando eu abro o meu projeto,
    jah aparece a mensagem de erro!

    não to intendendo o pq!

  16. Eliano Estevam says

    Olá Felipe,

    Há possibilidades de trabalhar o Zend usando Frames ? Se sim, você pode me dar essa dica !

  17. Paulo Cesar says

    Como fica a configuracao do http.conf, do bootstrap e dos arquivos .htaccess no apache para windows???

  18. Rodrigo Gregorio says

    Parabéns pelo post ,é visto a hora de dar o próximo passo a aprofundar-me nos Frameworks.

  19. Rodrigo Gregorio says

    Onde lê se "Windows XP" leia "wine"

  20. bruno says

    "O controller do ZF, Zend_Controller, é feito para suportar websites com urls limpas.
    Então, todas as requisições precisam ser feitas diretamente em um arquivo index.php, essa prática é conhecida como bootstrapping.
    E para isso precisamos criar alguns arquivos .htaccess."

    esses arquivos não tem nome? nao entendi essa parte

  21. Adriano Rodrigues says

    Parabéns bem esclarecedor sua abordagem do assunto.
    Estaremos aqui tb para contribuir.

    Adriano Rodrigues

  22. Flávio Caio says

    Bom atigo pena que no arquivo ZF-tutorial/app/views/scripts/index/index.phtml não separou o script do html, não respeitando a arquitetura MVC.

  23. Felipe Tonello says

    Flávio,
    Não entendi o que você quis dizer.

    Abraços

  24. Marco says

    Muito bom. Bem objetivo.
    Uso o Codeigniter pela viabilidade nos servers, já que (na maioria) não temos acesso a configurações de apache, php, etc, mas o Zend tem me chamado a atenção.
    Como contornar esse problema ? Uma coisa é rodar ele localmente, outra é nos servers remoto da vida :-) , principalmente quando o cliente já tem sua conta de hospedagem...

    Abraços e muita sorte para nós!

  25. Camila Andrade says

    Ladies & Gentleman:

    Estou com um sério problema (eu acho). Não conheço nada do Zend, o indivíduo foi apresentado hoje para minha pessoa.
    Preciso instalá-lo na minha máquina e aprender a trabalhar c/ ele, por causa de um novo projeto. No entanto, não estou conseguindo nem instalar, rs.
    Não encontro nenhum executável dentro da pasta... como faço?

    Agradeço desde já, qq ajuda será bem vinda!

    Camila Andrade (.NET Developer)

  26. Alex Barradas says

    Olá Felipe Tonello,
    Comecei a estudar o Zend recentemente ( para ser exato há dois dias ) e estou tendo alguns problemas para instalar e configurar o ambiente de desenvolvimento.
    Como material de estudo utilizei o livro “Practical Web 2.0 Applications with PHP” como meu guia.
    A primeira coisa que fiz foi criar a seguinte estrutura:
    /
    |- /data
    | |- /logs
    | |- /uploaded-files
    | |- /tmp
    |- /htdocs
    |- /include
    | |- /Controllers
    |- /templates

    Depois fiz um fake DNS para o meu navegador resolver o hostname “phpweb20” para 130.100.250.122.

    127.0.0.1 localhost
    130.100.250.122 phpweb20
    (c:\windows\system32\drivers\etc\hosts)

    Em seguida modifiquei o httpd.conf:

    Ativei os seguintes módulos
    LoadModule rewrite_module modules/mod_rewrite.so
    LoadModule vhost_alias_module modules/mod_vhost_alias.so

    Fiz um virtualhost para o endereço 130.100.250.122 com as seguintes conf.:

    ServerName phpweb20
    DocumentRoot "c:/wamp/www/phpweb20/htdocs"

    Options FollowSymLinks
    AllowOverride None
    Options All

    php_value include_path ".;c:/wamp/www/phpweb20/include;c:/wamp/bin/php/php5.2.5/PEAR"
    php_value magic_quotes_gpc off
    php_value register_globals off

    Dei acesso ao endereço:
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
    Allow from 130.100.250.122

    Algumas outras configurações continuam da seguinte forma:

    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
    AddType application/x-httpd-php .php3

    Depois criei um arquivo “.htaccess” com a seguinte configuração (coloquei ele na pasta htdocs):

    RewriteEngine on
    RewriteCond %{SCRIPT_FILENAME} !-f
    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1

    Continuando copiei apenas a pasta Zend com os seus subdiretórios encontrada em (ZendFramework-1.5.1\library\Zend) para dentro da pasta include.

    |- /include
    | |- /Controllers
    | |- /Zend

    Então fiz os seguintes arquivos:

    O primeiro localizado no htdocs:
    (index.php)
    setControllerDirectory('../include/Controllers');
    $controller->dispatch();
    ?>

    O segundo e terceiro localizados no include\Controllers:
    (IndexController.php)

    (NewsController.php)

    Beleza, então na hora de testar acontece o seguinte erro:

    http://phpweb20/

    Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)' in C:\wamp\www\phpweb20\include\Zend\Controller\Dispatcher\Standard.php:249 Stack trace: #0 C:\wamp\www\phpweb20\include\Zend\Controller\Front.php(914): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 C:\wamp\www\phpweb20\htdocs\index.php(7): Zend_Controller_Front->dispatch() #2 {main} thrown in C:\wamp\www\phpweb20\include\Zend\Controller\Dispatcher\Standard.php on line 249

    http://phpweb20/news

    Erro 404.

    Você pode me ajudar a me explicar o que está acontecendo e me mostrar uma solução? Ficaria muito agradecido! :)

  27. Felipe Tonello says

    Opa, tudo bom?

    Então.. pela excpetion que está retornando.. acredito que seja no seu rewrite module..
    está linha não está correta:

    RewriteRule ^(.*)$ index.php/$1

    troque para:

    RewriteRule ^(.*)$ index.php

    Att,
    Felipe Tonello

  28. psmarques says

    Será que existe a possibilidade de reduzir o consumo de CPU no zend framework ??? possuo uma revenda de sites, num servidor dedicado virtual e infelizmente os sites estão lerdando um poquinho...

    Tava monitorando no putty, o uso da cpu ta em 100% sempre... então acho que o framework se torna inviável para este tipo de aplicação não é ? :(

    Ainda possuo um sistema velho, usando o tiny but strong e realmente a diferença é bastante perceptivel.

  29. Claudio Silva says

    Opa...
    fala felipe.. blz?

    kra.. mto bom esse tuto..

    já tinha testado alguns frameworks..
    testado também alguns tutoriais do Zend e nao tinha conseguido fazer funcionar... acho que estava errando algo na config do apache.. hehe

    vou fuçar mais no Zend agora.. :)

    valew!!
    até mais
    abraços..

  30. diego says

    kra como faço para subir um site feito no zend...
    no servidor????????
    essas configurações funcionarão perfeitamente?

  31. Luiz Sanches says

    Pai d'Égua o teu artigo Felipe!

  32. fabio jose says

    Ate que enfim! Obrigado!

  33. fabio jose says

    Muito interessante! Essa introdução. Mais uma vez obrigado.

  34. Wellington says

    Dos diversos tutoriais que olhei na net e até em um livro br do zend framework, não dava nada certo, muita enrolação e etc. Pelo seu tutorial consegui fazer de boa o hello world.

    Obs: Fiz utilizando o xampp e nas configurações do apache não tinha:

    AddModule mod_rewrite.c

    AccessFileName .htaccess

    Mesmo assim tudo ok.

  35. Rondson Lima says

    Parabéns pelo tutorial, com certeza vou ler outros do seu site!

  36. Cláudio Souza says

    Otima matéria sobre ZF!
    Felipe, tira uma divida, as soluções Zend implicam diretamente em alterações no servidor de web? Pois existem muitos servidores/empresas que não adminitem certas práticas. Nestes casos quais soluções a Zend tem pra os desenvolvedores PHP?

  37. MarcelloMtv says

    Parabens"!''

  38. Lucas Renan says

    parabéns, belo tutorial

  39. Fabiano says

    Saudações:

    Estou sofrendo com o Zend. Tentei de tudo e nada da certo com esta bendita configuração. O meu arquivo phtml tem este conteudo:

    titulo;?>

    numeros;?>

    rodape;?>

    Porém o resultado no navegador é este ai:

    titulo;?>

    numeros;?>
    rodape;?>

  40. Rondson Lima says

    Prezado Felipe,

    Também é possível inserir o comando Zend_Loader::registerAutoload(); no lugar de Zend_Loader::loadClass('Zend_Controller_Front'); da index.php.
    Desta maneira as classes do Zend já são indexadas não sendo necessário realizar a importação com um método __autoload().

    Parabéns pelo post.
    Rondson Lima

  41. Gabriel Bruno says

    Primeiramente gostaria de parabenizar-lo pelo excelente tutorial que postou aqui, pelo menos para minha pessoa, foi uma porta de entrada para o trabalho com este framework, apesar de encontrar algumas dificuldades tudo funcionou extremamente bem. É possível que nem leia por que faz tanto tempo que postou este tuto.
    Mas não podia deixar de agradecer. Obrigado... Valeu.

  42. Marcelo Ramos says

    Aiii Lindão

  43. Rodolfo says

    Ola Felipe, estou começando no zend e segui os passos para instala-lo, localmente. Eu utilizo o XAMPP que ja tem o apache e etc, mas quando tento acessar localmente fala que não foi encontrado o arquivo.

    Você poderia me ajudar por favor

    Obrigado

  44. Lucas says

    escape($this->titulo); ?> escape($this->detalhe); ?>

    Deu isso! o q fazer?

  45. Marcio says

    Muito bom este tutorial. Ajudou bastante.

  46. Grossi says

    Galera, estou contratando programador PHP em BH/MG. Interessados acesse e cadastre o currículo http://www.rhvagas.com.br/pesquisa.php?status=exibir_vaga&cod_vaga=TF.91 ou mande seu curriculo para rodrigo@solides.com.br

  47. Renan says

    Cara coloca a referência de onde você pegou esse conteúdo, isso vai facilitar a aprendermos.

Continuing the Discussion

  1. Newton Wagner » Arquivo » Visitando o Zend Framework linked to this post on March 29, 2007

    [...] uma série de artigos sobre alguns componentes do ZF. Enquanto isso, você pode ver o artigo “Zend Framework para um PHP mais poderoso“, de Felipe Tonello, que dá uma visão geral e os primeiros passos do framework.Compare [...]

  2. PHP - Frameworks « Blog Thiago Coelho linked to this post on February 18, 2008

    [...] também vi muitos tutorias, artigos e um deles me trouxe um certo interesse também que o site do Felipe Tonello que descobri através do Google. Daqui alguns dias estarei aprofundando mais nesse tema e criarei [...]

  3. routing doesn't work properly - Zend Framework Forum linked to this post on March 27, 2008

    [...] routes" work in ZF. I found some articles yesterday that explains it better: Akra's tutorial Felipe Tonello's tutorial (in portuguese) In fact, the directive above must be configured in apache's file httpd.conf: [...]

  4. links for 2008-12-10 « Minesa IT linked to this post on December 10, 2008

    [...] Zend Framework para um PHP mais poderoso | Felipe Tonello (tags: zendframework web zend tutoriais tutorial server php5 php framework programação sobre) [...]

  5. Visitando o Zend Framework at Newton Wagner linked to this post on June 10, 2010

    [...] uma série de artigos sobre alguns componentes do ZF. Enquanto isso, você pode ver o artigo “Zend Framework para um PHP mais poderoso“, de Felipe Tonello, que dá uma visão geral e os primeiros passos do [...]



Some HTML is OK

or, reply to this post via trackback.