在php类变量中一个相等的第二个变量?

时间:2016-09-14 20:46:09

标签: php

这是我的代码:

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';

    // ...
    }

这是工作。我得到了设计和代码。工作得很好。我的问题是为什么?

1 个答案:

答案 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只能在运行时确定,因此是非法的。