您不能使用表达式(如串联)初始化类属性。相反,您必须在构造函数中执行此操作:
class FamillePieceControllerCore extends FrontController
{
public $php_self = 'famille-piece.php';
private $webservice_url;
public function __construct() {
$this->webservice_url = _CICERONE_CONNECT_BASE_URL_ . 'WSC003&P2=0';
}
}
从文档中:
类成员变量称为“属性”。您可能还会看到使用“属性”或“字段”等其他术语来提及它们,但出于本参考的目的,我们将使用“属性”。它们是通过使用关键字public、protected或之一来定义的private,后跟一个普通的变量声明。
这个声明可能包括一个初始化,但是这个初始化必须是一个常量值——也就是说,它必须能够在编译时被评估,并且不能依赖于运行时信息才能被评估。
定义的常量define()是在运行时定义的,因此_CICERONE_CONNECT_BASE_URL_在编译时初始化属性时不知道 的值。
更新以后的 PHP 版本:
从 PHP 5.6 开始,类属性声明中允许使用简单表达式,只要它们仍然可以在编译时求值。因此,原始发布的代码将在 PHP 5.6+ 中正确编译和执行。仍然不允许任何需要运行时评估的东西,例如函数调用或变量插值。
// This is okay in PHP 5.6+
public $property = SOME_CONST . " other stuff";
// This is still not possible since
public $property = strlen(SOME_CONST);