使用包含文件的最佳方法,该文件只包含PHP中的数组

时间:2010-01-15 06:41:40

标签: php kohana kohana-3

Kohana的配置文件如下所示..这是一个数据库配置文件(简化)的示例

return array(
    'dbhost' => 'localhost',
    'user'   => 'Tom_Jones'
);

我还有一个想要连接细节的CMS。虽然CMS使用不同的用户(拥有更多权限),但我想知道包含此文件并从中获取数据的最佳方式(以便不重复自己的主机名和dbname)。

我还没有想到任何优雅的解决方案,还没有挖掘Kohana,看看它是如何做到的。这是星期五晚上,所以除了我以外,每个人都可能很明显。

更新

我道歉,我忘了说这是使用Kohana 3

4 个答案:

答案 0 :(得分:1)

我下载了Kohana并且看不到您的示例文件,但如果您使用的是当前版本,则可以重新调整配置文件,如下所示:

<?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
?>

答案 1 :(得分:1)

http://docs.php.net/function.include说:

此外,还可以从包含的文件中返回值。您可以像使用普通函数一样获取包含调用的值。

我们来看看你的示例代码

<?php // test2.php
return array(
  'dbhost' => 'localhost',
  'user'   => 'Tom_Jones'
);

以及包含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'];

打印localhost

答案 2 :(得分:1)

在Kohana v3中,在Kohana_Config_Reader类中,方法load()

$config = Arr::merge($config, require $file);

require $file用于在配置文件中加载数组。

答案 3 :(得分:0)

documentation包含有关如何访问这些配置文件的一些基本信息。因此,如果您在db.php中名为application/config的文件中包含以下内容:

<?php defined('SYSPATH') or die('No direct script access.');

return array(
    'host' => 'localhost',
    'user'   => 'Tom_Jones'
);

您可以像这样访问它们:

$options = Kohana::config('db');
echo $options['user'];
echo $options['host'];

或者像这样:

echo Kohana::config('db.user');
echo Kohana::config('db.host');

或者像这样:

echo Kohana::config('db')->user;
echo Kohana::config('db')->host;