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.533 ]
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>.
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);
[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!
[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!