Melhor maneira de utilizar um arquivo de inclusão que inclui apenas uma matriz no PHP
Pergunta
Os arquivos de configuração de Kohana são assim. Aqui está um exemplo de um arquivo de configuração de banco de dados (simplificado)
return array(
'dbhost' => 'localhost',
'user' => 'Tom_Jones'
);
Eu também tenho um CMS que deseja os detalhes da conexão. Embora o CMS use um usuário diferente (com mais direitos), gostaria de saber a melhor maneira de incluir esse arquivo e obter os dados (para não me repetir para o nome do host e o DBName).
Ainda não pensei em soluções elegantes e ainda não cavei Kohana para ver como isso acontece. É tarde da sexta -feira aqui, então provavelmente é realmente óbvio para todos, exceto eu.
Atualizar
Minhas desculpas, esqueci de incluir que isso está usando Kohana 3!
Solução
Em Kohana v3, no Kohana_Config_Reader
classe, método load()
:
$config = Arr::merge($config, require $file);
require $file
é usado para carregar a matriz no arquivo de configuração.
Outras dicas
Eu baixei Kohana e não consegui se parecer com o seu exemplo, mas se você estiver usando a versão atual, poderá redirecionar os arquivos de configuração como este:
<?php
// Your script
define('SYSPATH', 'true'); // So Kohana doesn't kill our script
$config = array();
include('path/to/system/config/database.php');
echo $config['default']['connection']['user']; // Echos database user
?>
http://docs.php.net/function.include diz:
Além disso, é possível retornar valores dos arquivos incluídos. Você pode assumir o valor da chamada de inclusão como faria com uma função normal.
Vamos pegar seu código de exemplo
<?php // test2.php
return array(
'dbhost' => 'localhost',
'user' => 'Tom_Jones'
);
e um script que inclui test2.php
<?php
$cfg = include 'test2.php';
if ( !is_array($cfg) ) {
// ... add useful error handling here ...
}
// you might want to test the structure of $cfg
// before accessing specific elements
echo $cfg['dbhost'];
impressões localhost
.
o documentação Contém algumas informações básicas sobre como você acessa esses arquivos de configuração. Então, se você tiver o seguinte em um arquivo chamado db.php
dentro application/config
:
<?php defined('SYSPATH') or die('No direct script access.');
return array(
'host' => 'localhost',
'user' => 'Tom_Jones'
);
Você os acessaria assim:
$options = Kohana::config('db');
echo $options['user'];
echo $options['host'];
Ou assim:
echo Kohana::config('db.user');
echo Kohana::config('db.host');
Ou assim:
echo Kohana::config('db')->user;
echo Kohana::config('db')->host;