我正在尝试创建一个Config类,以便我可以轻松编辑我的网站信息。我的所有配置都保存在一个php(而不是.inc)文件中,但我似乎无法从我的Config.php
类访问它。我错过了什么?
// My folders
sunrise.app
- conf.php
- Classes\Sunrise\Config.php
public
- sample.php
我的配置文件:
// conf.php
return array(
'sample' => 'Foo'
);
这是我的班级:
// Classes\Sunrise\Config.php
namespace Classes\Sunrise;
class Config {
private static $config;
public static function setup() {
ob_start();
include '../sunrise.app/conf.php';
self::$config = ob_get_contents();
ob_end_clean();
}
public static function all() {
return self::$config;
}
}
我对autoload的使用工作得很好,所以这不是问题。我唯一不能得到的是当我运行Config::all()
所有我得到的是NULL
,空字符串或错误消息。我错过了什么?
// Sample php file
use Classes\Sunrise\Config;
Config::setup();
echo print_r(Config::all());
更多
我在include
中使用路径,但仍然没有:
conf.php
../conf.php
../../conf.php
../sunrise.app/conf.php
我有时会收到此错误
<br /> <b>Warning</b>: include(../../conf.php): failed to open stream: No such file or directory in <b>D:\xampp\htdocs\sunrise\sunrise.app\Classes\Sunrise\Config.php</b> on line <b>9</b><br /> <br /> <b>Warning</b>: include(): Failed opening '../../conf.php' for inclusion (include_path='.;D:\xampp\php\PEAR') in <b>D:\xampp\htdocs\sunrise\sunrise.app\Classes\Sunrise\Config.php</b> on line <b>9</b><br />
答案 0 :(得分:0)
dirname(__FILE__).'../../conf.php'
应该有效。
请注意,在配置文件中使用return
时,请确保将include
的返回值分配给变量。
$conf = include dirname(__FILE__).'../../conf.php'
根本不需要ob_*
个功能。因为配置文件不输出任何内容。它只是执行代码。因此,遵循setup
方法就足够了。
public static function setup() {
self::$config = include dirname(__FILE__).'../../conf.php'
}