0

我正在尝试创建一个 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;
    }

}

我对自动加载的使用很好,所以这不是问题。我唯一不能得到的是当我运行时,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 />
4

1 回答 1

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'
 }
于 2013-09-21T17:12:10.583 回答