Back-End

22 abr, 2008

Zend Framework – Arquivos de Configuração com Zend_Config()

Publicidade

Essa classe disponível no Zend Framework permite que sejam criados arquivos de configuração simples e eficazes para a nossa aplicação. Nesse artigo apresentarei 04 exemplos de utilização:

  1. Arrays
  2. Arquivo INI
  3. Arquivo XML
  4. Arquivo PHP

Poderemos notar que não há muita diferença de um script para o outro, já que alteraremos apenas algumas linhas do código.

Versão do framework utilizada: 1.5

Download: http://framework.zend.com/

IDE utilizada: Zend Studio for Eclipse

PROJETO 01: DADOS DA CONFIGURAÇÃO ARMAZENADOS EM ARRAYS.

1. No Zend Studio, clique em FILE / NEW / ZEND FRAMEWORK PROJECT. Ele criará um novo projeto seguindo a estrutura sugerida na documentação do Zend Framework.

Novo Projeto Zend StudioNovo Projeto Zend Studio

2. Confira abaixo, a estrutura gerada:

Estrutura ZFEstrutura ZF

3. Editar o arquivo index.php que está dentro da pasta HTML. Nesse arquivo estão os componentes que serão utilizados. Ele é responsável por invocar os controladores e inicializar a aplicação.

require_once 'Zend/Config.php';
require_once 'Zend/Registry.php';

/**
 * Configuração por array
 */
configArray = array( 'titulo' => 'Testando Zend_Config() com Arrays'
                    , 'autor' =>  'Júlio César Martini'
                    , 'site'  =>  'iMasters');

config = new Zend_Config(configArray);

registry = new Zend_Registry();
registry->set('config', config);

Screenshot:

Index.phpIndex.php

Linha 11: Incluímos em nossa aplicação o Zend Config.

Linha 12: Incluímos em nossa aplicação o Zend Registry.

Linha 17: Criamos um array com os dados da configuração do nosso sistema.

Linha 21: Instanciamos Zend_Config() passando como parâmetro o nosso array.

Terminado essa etapa, poderíamos simplesmente na linha abaixo dar um echo config->titulo que funcionaria perfeitamente, mas como quero que essa variável esteja disponível para todas as camadas do meu projeto, vou utilizar o Zend_Registry().

Linha 23: Instancio Zend_Registry();

Linha 24: Armazena o valor de config.

4. Editar o arquivo IndexController.php que está dentro da pasta: application / default / controllers. Na função indexAction() resgataremos o valor que está no Registry e mandaremos o resultado para a VIEW que será responsável pela visualização.

class IndexController extends Zend_Controller_Action 
{
	/**
	 * The default action - show the home page
	 */
    public function indexAction() 
    {
        // TODO Auto-generated IndexController::indexAction() action
        params = Zend_Registry::get('config');
        this->view->assign('titulo', params->titulo);
        this->view->assign('autor', params->autor);
        this->view->assign('site', params->site);
    }
}

Screenshot:

IndexControllerIndexController

Linha 20: Utilizando o método GET do Registry recuperamos CONFIG.

Linha 21: Atribuímos o valor titulo de config a variável titulo que está disponível na view index.phtml.

5. Editar o arquivo index.phtml que está dentro da pasta: application / default / views / scripts / index para exibir os dados enviados pelo IndexController.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
	<title><?php echo this->titulo; ?></title>
</head>

<body>
	<h1> <?php echo this->titulo; ?> </h1>
	<p> Autor: <?php echo this->autor; ?> </p>
	<p> Site: <?php echo this->site; ?> </p>
</body>

</html>

Screenshot:

index.phtmlindex.phtml

Linha 20: Exibimos o valor de titulo que vem setado pelo IndexController().

Resultado:

Resultado utilizando configuração com arrays.Resultado utilizando configuração com arrays.

PROJETO 02: DADOS DA CONFIGURAÇÃO ARMAZENADOS EM ARQUIVOS INI

1. Seguir os passos 1, 2 e 3 do projeto 01.

2. Criar o arquivo CONFIG.INI na pasta html.

config.iniconfig.ini

3. No passo 03 alteraremos algumas linhas no index.php para trabalhar com a configuração por arquivo INI.

require_once 'Zend/Config/Ini.php';
require_once 'Zend/Registry.php';

/**
 * Configuração por arquivo INI
 */

config = new Zend_Config_Ini('config.ini', 'producao');
registry = new Zend_Registry();
registry->set('config', config);

Screenshot:

index.phpindex.php

Linha 11: Incluímos em nossa aplicação o Zend Config Ini.

Linha 12: Incluímos em nossa aplicação o Zend Registry (ver explicação no projeto 01).

Linha 21: Instanciamos Zend_Config_Ini() passando como parâmetro o path do arquivo INI a ser lido e a área desejada.

4. Seguir os passos 04 e 05 do projeto 01.

Resultado:

Resultado utilizando configuração com arquivo INI.Resultado utilizando configuração com arquivo INI.

PROJETO 03: DADOS DA CONFIGURAÇÃO ARMAZENADOS EM ARQUIVOS XML

1. Seguir os passos 1, 2 e 3 do projeto 01.

2. Criar o arquivo CONFIG.XML na pasta html.

config.xmlconfig.xml

3. No passo 03 alteraremos algumas linhas no index.php para trabalhar com a configuração por arquivo XML.

require_once 'Zend/Config/Xml.php';
require_once 'Zend/Registry.php';

/**
 * Configuração por arquivo XML
 */

config = new Zend_Config_Xml('config.xml', 'teste');
registry = new Zend_Registry();
registry->set('config', config);

Screenshot:

index.phpindex.php

Linha 11: Incluímos em nossa aplicação o Zend Config XML.

Linha 12: Incluímos em nossa aplicação o Zend Registry (ver explicação no projeto 01).

Linha 21: Instanciamos Zend_Config_Xml() passando como parâmetro o path do arquivo XML a ser lido e a área desejada.

4. Seguir os passos 04 e 05 do projeto 01. O legal do arquivo INI e do XML é que posso, por exemplo, definir a área a ser lida. No nosso exemplo, criei parâmetros para uma área de TESTE e PRODUÇÃO.

Resultado:

Resultado utilizando configuração com arquivo XMLResultado utilizando configuração com arquivo XML

PROJETO 04: DADOS DA CONFIGURAÇÃO ARMAZENADOS EM ARQUIVO PHP

1. Seguir os passos 1, 2 e 3 do projeto 01.

2. Criar o arquivo CONFIG.PHP na pasta html.

config.phpconfig.php

3. No passo 03 alteraremos algumas linhas no index.php para trabalhar com a configuração por arquivo PHP.

require_once 'Zend/Config.php';
require_once 'Zend/Registry.php';

/**
 * Configuração por arquivo PHP
 */

config = new Zend_Config( require 'config.php' );
registry = new Zend_Registry();
registry->set('config', config);

Screenshot:

index.phpindex.php

Linha 11: Incluímos em nossa aplicação o Zend Config.

Linha 12: Incluímos em nossa aplicação o Zend Registry (ver explicação no projeto 01).

Linha 21: Instanciamos Zend_Config() passando como parâmetro o path do arquivo PHP a ser lido.

4. Seguir os passos 04 e 05 do projeto 01.

Resultado:

Resultado utilizando configuração com arquivo PHPResultado utilizando configuração com arquivo PHP

Conclusão:

Como podemos observar nesse artigo, existem N maneiras de se armazenar dados de configuração da nossa aplicação utilizando o Zend Framework. Atualmente muitos programadores utilizam arquivos INI/XML para guardar usuário e senha de banco de dados o que pode gerar um grave problema de segurança. Talvez ler os dados direto de um arquivo PHP nos daria uma segurança maior. O que acham? Opinem, deixem suas sugestões, afinal a coluna é de vocês.

Download dos scripts: Clique AQUI.