将文件包含到PHP类中
我正在尝试创建一个配置类,以便可以轻松编辑我的站点信息。我所有的配置文件都保存在一个php(不是.inc)文件中,但我似乎无法从将文件包含到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();
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
时,您所要做的就是将其分配给某个变量。