Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将文件包含到PHP类中_Php_Oop_Include - Fatal编程技术网

将文件包含到PHP类中

将文件包含到PHP类中,php,oop,include,Php,Oop,Include,我正在尝试创建一个配置类,以便可以轻松编辑我的站点信息。我所有的配置文件都保存在一个php(不是.inc)文件中,但我似乎无法从config.php类访问它。我错过了什么 // My folders sunrise.app - conf.php - Classes\Sunrise\Config.php public - sample.php // Sample php file use Classes\Sunrise\Config; Config::setup();

我正在尝试创建一个配置类,以便可以轻松编辑我的站点信息。我所有的配置文件都保存在一个php(不是.inc)文件中,但我似乎无法从
config.php
类访问它。我错过了什么

// My folders
sunrise.app
    - conf.php
    - Classes\Sunrise\Config.php
public
    - sample.php
// Sample php file
use Classes\Sunrise\Config;

Config::setup();
echo print_r(Config::all());
我的配置文件:

// 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
、一个空字符串或一条错误消息。我错过了什么

// My folders
sunrise.app
    - conf.php
    - Classes\Sunrise\Config.php
public
    - sample.php
// 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 />

警告:include(../../conf.php):打开流失败:第9行的D:\xampp\htdocs\sunrise\sunrise.app\Classes\sunrise\Config.php中没有这样的文件或目录


警告:include():打开“../../conf.php”以包含失败(include_path=”;D:\xampp\php\PEAR')在第9行的D:\xampp\htdocs\sunrise\sunrise.app\Classes\sunrise\Config.php中
目录名(\uuuuu文件)。“../../conf.php”
应该可以工作

注意:在配置文件中使用
return
时,请确保将
include
的返回值指定给变量

$conf = include dirname(__FILE__).'../../conf.php'
您根本不需要
ob.*
函数。因为配置文件不输出任何内容。它只是执行代码。因此,遵循
设置
方法就足够了

 public static function setup() {
    self::$config = include dirname(__FILE__).'../../conf.php'
 }

您可以尝试使用
\uuuu DIR\uuuu
Nope。我得到

警告:include(\uuuu DIR\uuuu/./../conf.php):打开流失败:在第9行
上的D:\xampp\htdocs\sunrise\sunrise.app\Classes\sunrise\Config.php中没有这样的文件或目录在第9行的D:\xampp\htdocs\sunrise\sunrise.app\Classes\sunrise\Config.php中,它工作了!我猜问题在于使用了
ob.*
函数?它们在这里没有效果。事实上,它们是无用的。当您在配置文件中使用
return
时,您所要做的就是将其分配给某个变量。