Melhor maneira de utilizar um arquivo de inclusão que inclui apenas uma matriz no PHP

StackOverflow https://stackoverflow.com/questions/2069901

  •  20-09-2019
  •  | 
  •  

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!

Foi útil?

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;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top