Implementando servidor de aplicações PHP utilizando Zend Framework

Esse mega artigo aborda todos os conceitos técnicos e práticos para a implementação de um servidor de aplicações PHP utilizando framework Zend, incluindo detecção de intrusão e entre outros conceitos. Vale a pena conferir.

[ Hits: 144.454 ]

Por: José Cleydson Ferreira da Silva em 27/04/2010


Padrões de diretórios para aplicações do Zend Framework



É importante seguir um padrão de diretórios que possa se encaixar dentro de um padrão que por sua vez, é determinado pela equipe de desenvolvimento, e neste caso especifico Zend Framework segue o padrão MVC (Model View Controller).

Esse padrão pode ser ilustrado na figura abaixo a seguir. Esse padrão é orientado para separar a lógica da aplicação da lógica de exibição, dessa forma evita-se que o usuário não tenha acesso a camada de controle diretamente.
Cada aplicação a ser desenvolvida possuirá diretórios públicos, que poderão estar acessíveis aos clientes e diretórios que serão usados para fazer a persistência e controle de fluxo. Portanto o padrão de diretórios se dará da seguinte forma: 1. application - configs - controllers - models - views 2. library 3. public 4. testes Como percebemos, o diretório application é responsável por garantir todo o fluxo de controle da aplicação, nele contém os subdiretórios que validam o conceito de camadas do padrão MVC. Abaixo faremos um rápido comentário a respeito desse diretórios e a função que cada um desempenha para o pleno funcionamento da aplicação que está sendo desenvolvida.

Config

O diretório configs é responsável por configurar a aplicação em desenvolvimento, essas configurações implicam em gerenciar as aplicações em desenvolvimento, testes e produção. As diretivas de configuração desse arquivo podem ser relativas a exibição de erros da aplicação, estas são aplicadas em todos os contextos, bem como, a diretiva [development : production] , [testing : production] e [staging : production].

O arquivo <application/configs/aplication.ini> foi idealizado para que se defina os todos os parâmetros de inicialização do aplicativo Zend, do próprio PHP ou outros módulos do PHP. Por exemplo, o Zend Tools, aquele aplicativo para gerar a estrutura dos novos aplicativos Zend, define os parâmetros para mostrar ou não as mensagens de falhas do PHP, o caminho da biblioteca Zend a ser utilizada, o nome da classe Bootstrap (motor de arranque) do aplicativo e o caminho de onde estariam os arquivos com as classes dos controles do aplicativo, todos necessários na inicialização.

É comum colocar neste arquivo também informações de conexões com base de dados, por exemplo, como o nome da base de dados e a senha. Claro que seria possível definir todos esses parâmetros em <public/index.php> e em <application/Bootstrap.php>, ou em outros arquivos, mas o <application/configs/aplication.ini> facilita o manuseio desse parâmetros de inicialização, melhorando a manutenção.

Funciona assim: o arquivo <public/index.php> inicia o aplicativo Zend através de um objeto <Zend_Application>, passando como parâmetro o nome do arquivo de inicialização para esse objeto, que no caso é o próprio <application/configs/aplication.ini>.

A partir daí, o objeto <Zend_Application> executa as funções necessárias para configurar o aplicativo de acordo como o que foi escrito no arquivo <ini>.Você pode pegar mais detalhes em <http://framework.zend.com/manual/en/zend.application.quick-start.html>.

(Néliton Antônio Campus)

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

Controllers

Esse diretório é responsável por por receber a todas as requisições do usuário, como sugere o nome, ele faz o controle do fluxo da aplicação se a necessidade é direcionar para o diretório view ou fazer a persistência no diretório models. Esse fluxo é orquestrado pelos arquivos que nele estiverem, geralmente por padrão sugere-se colocar a palavra controler em cada arquivo, por exemplo: - IndexControler.php.

Models

Sempre que há necessidade de buscar dados ou informações em uma base de dados ou adicionar um registro a camada de modelo que por sua vez faz a persistência de para completar o fluxo de requisição e envio de dados. Podendo direcionar novamente para o controle ou para a view.

View

Esse diretório é responsável por renderizar a página que será exibida ao usuário.

Bootstrap.php

O arquivo bootstap.php fica na raiz do diretório application, sendo ele responsável por configurar toda a aplicação. A configuração do bootstrap.php deve ser planejada com esmero, pois nele pode fazer as seguintes configurações:
  • Controle "motor de arranque" do aplicativo.
  • Inicia autocarregamento de classes.
  • Configura e inicia o autocarregamento de classes.
  • Inicia o modelo de tela pelo método MVC.
  • Inicia a base de dados.
  • Inicia a base de dados do aplicativo com o usuario de menor privilégio.
  • Inicializa o menu.
  • Obtém a referência da visão.

* Exemplo de configuração do bootstrap.php
* autor: Néliton Antônio Campos
* primeira versão: 31 dez 2009

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {

   /**
   * Inicia autocarregamento de classes.
   */

   protected function _initAutoLoader() {

      /**
      * Configura e inicia o autocarregamento de classes.
      */

      $autoLoader = new Zend_Application_Module_Autoloader(
         array('namespace' => '',
            'basePath' => APPLICATION_PATH));

   }

   /**
   * Inicia o modelo de tela pelo método MVC.
   */

   protected function _initLayout() {
      $configs = array(
         'layout' => 'layout0',
         'layoutPath' => APPLICATION_PATH . '/layouts/scripts'
         );
      Zend_Layout::startMvc($configs);
   }

   /**
   * Inicia a base de dados.
   */

   protected function _initDb() {

      /**
      * Inicia a base de dados do aplicativo com o usuario de menor privilégio.
      */

      $database = array(
         'host' => 'localhost',
         'username' => 'usuario',
         'password' => '',
         'dbname' => 'base_de_dados',
         'charset' => 'latin1'
         );
      $db = Zend_Db::factory('Pdo_Mysql', $database);
      Zend_Db_Table::setDefaultAdapter($db);
      Zend_Registry::set('Zend_Db', $db);

   }

Página anterior     Próxima página

Páginas do artigo
   1. Índice
   2. Introdução
   3. Sobre Zend Framework
   4. Particionamento
   5. Instalação do Servidor Web
   6. Habilitando o módulo mod_rewrite
   7. Habilitando o módulo mod_userdir
   8. Instalando Zend Framework
   9. Testando Zend Framework
   10. Padrões de diretórios para aplicações do Zend Framework
   11. Script para a criar a estrutura de diretório do MVC
   12. Configurando restrição de acesso
   13. Configurando Virtual Host
   14. Padronizando o formato dos registros em arquivos de log
   15. Suporte a conexões seguras com SSL
   16. Configurando exibição de erros
   17. Liberando acesso a ftp
   18. Rotinas de backup
   19. Ferramenta para detecção de intrusão (opcional)
   20. Acelerando o PHP (opcional)
   21. Considerações finais
Outros artigos deste autor

Elaborando vídeo-aula no Linux com Gtk-recordMydesktop

Compiz - Conhecendo a fundo II

Implementando servidor web Java com Tomcat no Linux

Implementando rotas estáticas no Linux com route

Como migrar banco de dados MySQL para PostgreSQL

Leitura recomendada

Servidor Jabber com LDAP

Efeito metálico no GIMP

Fedora 12 - instalação e uso

Jack - Servidor de Áudio

Usando aMSN com plugin Music com suporte ao Juk e Amarok

  
Comentários
[1] Comentário enviado por viniciusgnu em 27/04/2010 - 08:47h

Meu velho, como sempre está de parabéns! "Keep up with the good work"!
Abraço

[2] Comentário enviado por cleysinhonv em 27/04/2010 - 08:50h

Valeu Vinicius!

Como sempre "procurar" / "tentar" / "me esforçar" em publicar artigos completos que ajudem a comunidade como um todo!

[3] Comentário enviado por uberalles em 27/04/2010 - 11:00h

Que "putza" app server bacana!! Muito bem detalhado seu artigo e passo a passo.

[4] Comentário enviado por cleysinhonv em 27/04/2010 - 11:33h

Olá Andre Miguel,

Bacana né! Procurei Explicar de forma clara e detalhar o máximo possível! Acredito que este material irá ajudar muitas empresas e pessoas que queiram implemetar esse tipo de solução!

Um abraço!

[5] Comentário enviado por valterrezendeeng em 27/04/2010 - 13:04h

Muito Bom o Artigo
Bem Feito e completo

Parabéns !!!!


Abraço

[6] Comentário enviado por razgriz em 27/04/2010 - 13:10h

Belo artigo Kurumin, continue assim!

[7] Comentário enviado por cleysinhonv em 27/04/2010 - 13:16h

Olá valter! Olá Prof. RazGriz!

Obrigado! Fico grato e com sentimento de dever cumprido. Espero que esse artigo possa ajuda-los de alguma forma, utilize-o e indique-o a quem precisar!

Um abraço!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts