Welcome to the Cookbook

loading...

3.4.3 A Classe Configuration

Ainda que poucas coisas precisem ser configuradas no CakePHP, às vezes é útil ter suas próprias regras de configuração para sua aplicação. No passado você definia valores de configuração customizados definindo variáveis ou constantes em alguns arquivos. Fazendo assim, você era forçado a incluir esse arquivo de configuração cada vez que precisasse usar aqueles valores.

A nova classe "Configure" do CakePHP pode ser usada para armazenar e retornar valores específicos da aplicação ou execução. Mas tenha cuidado! Esta classe permite que você armazene qualquer coisa para ser usada em outra parte do seu código: uma grande tentação para quebrar o padrão MVC para o qual o CakePHP foi projetado. O objetivo principal da classe Configure é manter centralizadas variáveis que podem ser partilhadas entre vários objetos. Se lembre de usar o lema "convenção e não configuração", e você não correrá o risco de quebrar a estrutura MVC que construímos.

Esta classe possui apenas uma instância e seus métodos podem ser chamados de qualquer parte dentro de sua aplicação, num contexto estático.

<?php Configure::read('debug'); ?>
  1. <?php Configure::read('debug'); ?>

3.4.3.1 Métodos de configuração

3.4.3.1.1 write

write(string $key, mixed $value)

Use write() para armazenar dados na configuração da aplicação.

Configure::write('Company.name','Pizza, Inc.');
Configure::write('Company.slogan','Pizza for your body and soul');
  1. Configure::write('Company.name','Pizza, Inc.');
  2. Configure::write('Company.slogan','Pizza for your body and soul');

o uso do ponto no parâmetro $key. Você pode usar essa notação para organizar sua configuração dentro dos grupos lógicos.

O exemplo acima poderia também ser escrito em uma única chamada:

Configure::write(
    'Company',array('name'=>'Pizza, Inc.','slogan'=>'Pizza for your body and soul')
);
  1. Configure::write(
  2. 'Company',array('name'=>'Pizza, Inc.','slogan'=>'Pizza for your body and soul')
  3. );

Você pode usar Configure::write('debug', $int) para alternar entre modos de produção e compilação no fly. Isso é recomendado especialmente para interações com AMF ou SOAP onde a informação do compilador pode causar problemas de sintaxe.

3.4.3.1.2 read

read(string $key = 'debug')

Usado para ler dados de configurações da aplicação. O padrão para CakePHP é o importante valor debug. Se key é fornecido, o dado é retornado. Usando nosso exemplo do write() acima, nós podemos ler o dado de volta:

Configure::read('Company.name');    //retorno: 'Pizza, Inc.'
Configure::read('Company.slogan');  //retorno: 'Pizza for your body and soul'
 
Configure::read('Company');
 
//retorno: 
array('name' => 'Pizza, Inc.', 'slogan' => 'Pizza for your body and soul');
  1. Configure::read('Company.name'); //retorno: 'Pizza, Inc.'
  2. Configure::read('Company.slogan'); //retorno: 'Pizza for your body and soul'
  3. Configure::read('Company');
  4. //retorno:
  5. array('name' => 'Pizza, Inc.', 'slogan' => 'Pizza for your body and soul');

3.4.3.1.3 delete

delete(string $key)

Utilizado para apagar informações de configuração do aplicativo.

Configure::delete('Company.name');
  1. Configure::delete('Company.name');

3.4.3.1.4 load

load(string $path)

Utilize este método para carregar informações de configuração de um arquivo específico.

// /app/config/messages.php:
<?php
$config['Company']['name'] = 'Pizza, Inc.';
$config['Company']['slogan'] = 'Pizza for your body and soul';
$config['Company']['phone'] = '555-55-55';
?>
 
<?php
Configure::load('messages');
Configure::read('Company.name');
?>
  1. // /app/config/messages.php:
  2. <?php
  3. $config['Company']['name'] = 'Pizza, Inc.';
  4. $config['Company']['slogan'] = 'Pizza for your body and soul';
  5. $config['Company']['phone'] = '555-55-55';
  6. ?>
  7. <?php
  8. Configure::load('messages');
  9. Configure::read('Company.name');
  10. ?>

Cada configuração chave-valor é representada no arquivo com o array $config. Quaisquer outras variáveis serão ignoradas pela função load().

3.4.3.1.5 version

version()

Retorna a versão do CakePHP para a aplicação corrente.

3.4.3.2 Variáveis de Configuração do Núcleo (Core) do CakePHP

A classe Configure é usada para gerenciar um conjunto de variáveis de configuração do núcleo(core) do CakePHP. Estas variáveis podem ser encontradas em app/config/core.php. Abaixo está uma descrição de cada variável e como ela afeta sua aplicação CakePHP.

Variável Configure Descrição
debug Muda a saída do depuração (debug) do CakePHP.

0 = Modo Produção. Sem saídas.
1 = Mostrar erros e avisos.
2 = Mostrar error, avisos, e SQL.
3 = Mostrar error, avisos, SQL, e dump completo do controlador.
App.baseUrl Retire o comentário desta definição se você não planeja usar o mod_rewrite do Apache com CakePHP. Não esqueça de remover seus arquivos .htaccess também.
Routing.admin Retire o comentário desta definição se você gostaria de tirar vantagem das rotas administrativas (admin routes) do CakePHP. Atribua esta variável com o nome da rota administrativa (admin route) que você gostaria de usar. Mais sobre isto depois.
Cache.disable Quando atribuido para verdadeiro (true), o modo "caching" é desabilitado em todo site (site-wide).
Cache.check Se atribuido para verdadeiro (true), habilita "caching" na visão (view caching). A habilitação é ainda necessária nos controladores, mas esta variável habilita a detecção destas configurações.
Session.save Diz ao CakePHP qual mecanismo de armazenamento de sessão usar.

php = Usar o armazenamento de sessão padrão do PHP.
cache = Usar o motor de "caching" (caching engine) configurado por Cache::config(). Muito útil em conjunto com Memcache (em instalações com multiplos servidores de aplicação) para armazenar ambos dados em cache(cached data) e sessões.
cake = Armazenar dados da sessão em /app/tmp
database = Armazenar dados da sessão em uma tabela no banco de dados. Tenha certeza de criar a tabela usando o arquivo SQL localizado em /app/config/sql/sessions.sql.
Session.table O nome da tabela (não incluindo nenhum prefixo) que armazenará a informação de sessão.
Session.database O nome do banco de dados que armazenará a informação de sessão.
Session.cookie O nome do cookie usado para rastrear sessões.
Session.timeout Tempo de expiração de sessão em segundos. O valor real depende do nível de Segurança (Security.level).
Session.start Inicia sessão automaticamente quando atribuido para verdadeiro (true).
Session.checkAgent Quando atribuido para falso (false),sessões do CakePHP não irão verificar para garantir que o agente usuário não mudou entre as requisições.
Security.level O nível de segurança do CakePHP. O Tempo de expiração de sessão definido em 'Session.timeout' é multiplicado de acordo com as configurações aqui presentes.

Valores válidos:
'high' = x 10
'medium' = x 100
'low' = x 300

Alto ('high') e médio ('medium') também pode ser habilitados em session.referer_check

ID's de sessão do CakePHP são também re-gerados entre requisições se o nível de segurança ('Security.level') é atribuido para alto ('high').
Security.salt Uma cadeia de caracteres aleatória usada no hashing de segurança (security hashing).
Asset.timestamp

Acrescenta um timestamp no final dos arquivos da url (CSS, JavaScript, Imagem) que é o horário da última modificação do arquivo em específico.

Valores válidos:
(bool) false - Não faça nada (padrão)
(bool) true - Coloca o timestamp apenas quando debug > 0
(string) 'force' - Coloca o timestamp sempre (debug >= 0)

Acl.classname, Acl.database Constantes usadas para a funcionalidade lista de Controle de Acesso (Access Control List) do CakePHP. Veja o capítulo Listas de Controle de Acesso (Access Control Lists) para mais informações.

Configuração de Cache é também encontrada em core.php — Nós estaremos abordando isto depois, logo fique atento.

A Classe Configure pode ser usada para ler e escrever itens de configurações do núcleo (core) em execução (on the fly). Isto pode ser especialmente útil se você quiser ativar o modo de depuração (debug) para uma seção limitada da lógica de sua aplicação, por exemplo.

3.4.3.3 Configuration Constants

Enquanto muitas opções de configurações são manipuladas por Configure, existem algumas constantes que CakePHP usa durante o tempo de execução.

Constante Descrição
LOG_ERROR Constante de erro. Usada para diferenciar log e depuração de erros. Atualmente PHP suporta LOG_DEBUG.