这是我的代码:
class Config {
static public $site = 'http://localhost/site/';
static public $style = $site . 'css/style.css';
// ...
}
这对我不起作用。我白了。
class Config {
static public $site = 'http://localhost/site/';
static public $style = 'http://localhost/site/css/style.css';
// ...
}
这是工作。我得到了设计和代码。工作得很好。我的问题是为什么?
答案 0 :(得分:0)
这是不可能的:
static public $style = $site . 'css/style.css';
表达式不能用于初始化类值。只允许使用常量值。这是您在构造函数中必须执行的操作,但由于它们是静态值,因此无法保证在您尝试访问这些静态之前对象已经初始化。
class foo {
public $foo = 1; // ok
public $bar = 1+1; // ok only in PHP 5.6+
public $baz = $this . $that; // not valid in any version of PHP
你唯一可以使用表达式(在php 5.6+中)是否可以在编译时计算结果值。所以1+1
没问题,因为可以在编译时处理。但$this . $that
只能在运行时确定,因此是非法的。