我正在学习在PHP OOP,我想把值从变量类常量。 我怎样才能做到这一点?
这是我的代码(不工作!):
class Dir {
const ROOT = $_SERVER['DOCUMENT_ROOT']."project/";
function __construct() {
}
}
有没有什么解决方案,如何从变量取值,添加字符串,并把它定 - 在OOP?
我正在学习在PHP OOP,我想把值从变量类常量。 我怎样才能做到这一点?
这是我的代码(不工作!):
class Dir {
const ROOT = $_SERVER['DOCUMENT_ROOT']."project/";
function __construct() {
}
}
有没有什么解决方案,如何从变量取值,添加字符串,并把它定 - 在OOP?
从手册页http://www.php.net/manual/en/language.oop5.constants.php你可以发现:
The value must be a constant expression, not (for example) a variable, a property, a result of a mathematical operation, or a function call.
常量不能有变量。
我建议你不要依赖于$_SERVER['DOCUMENT_ROOT']
相反,你可以定义ROOT
你的自我。
例如,你有一个config.php
在文档根目录,你可以这样做
define('ROOT', __DIR__.'/'); // php version >= 5.3
define('ROOT', dirname(__FILE__).'/'); // php version < 5.3
然后用ROOT
来代替。
为什么不把它在你的__construct()
从技术上讲,这就是它是有什么。
class Dir {
public function __construct() {
self::ROOT = $_SERVER['DOCUMENT_ROOT']."project/";
}
}
因为你想使用OOP,我建议你这个解决方案,都必须是类里面。 所以,因为一个常量或静态无功直接使用是不可能的,我会用一个静态函数:
class Dir
{
public static function getRoot()
{
return $_SERVER['DOCUMENT_ROOT'] . 'project/';
}
}
你可以使用它像
Dir::getRoot();