将文件包含到PHP类中

时间:2013-09-21 17:02:28

标签: php oop include

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

1 个答案:

答案 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'
 }