我正在学习PHP中的OOP,我希望将值从变量赋值给类常量。我怎么能这样做?
这是我的代码(不工作!):</ p>
class Dir {
const ROOT = $_SERVER['DOCUMENT_ROOT']."project/";
function __construct() {
}
}
是否有任何解决方案,如何从变量获取值,添加字符串并将其置于常量 - 在OOP中?
答案 0 :(得分:6)
在手册页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.
答案 1 :(得分:2)
常量不能有变量。
我建议您不要依赖$_SERVER['DOCUMENT_ROOT']
,而是可以定义自己的ROOT
。
例如,您在文档根目录中有一个config.php
,您可以
define('ROOT', __DIR__.'/'); // php version >= 5.3
define('ROOT', dirname(__FILE__).'/'); // php version < 5.3
然后使用ROOT
代替。
答案 2 :(得分:0)
为什么不在__construct()
中设置它。从技术上讲,这就是它的用途。
class Dir {
public function __construct() {
self::ROOT = $_SERVER['DOCUMENT_ROOT']."project/";
}
}
答案 3 :(得分:0)
我建议你使用这个解决方案,因为你想使用OOP,所有都必须在课堂内。因为const或静态var直接使用是不可能的,我会使用静态函数:
class Dir
{
public static function getRoot()
{
return $_SERVER['DOCUMENT_ROOT'] . 'project/';
}
}
你可以像
一样使用它Dir::getRoot();