我开始在PHP中使用类,我有以下代码:
class webConfig
{
public $SALT1 = "3525";
public $SALT2 = "2341";
public $SALT3 = $SALT1.$SALT2;
}
但这给了我500内部服务器错误,这意味着我做错了。
有没有办法不使用任何功能,包括构造?
这不起作用:
class webConfig
{
public $SALT1 = "3525";
public $SALT2 = "2341";
public $SALT3 = $this->SALT1.$this->SALT2;
}
答案 0 :(得分:2)
在PHP中;表达式不允许作为任何属性的默认值。由于这个原因,PHP只是说你甚至不应该想象这样做。
但是,幸运的是;这就是为什么你有构造函数方法 - 来帮助你初始化一些类属性,使用表达式(如你的情况)将默认值分配给成员属性等等。使用一个构造函数,您的类可能看起来像下面的Snippet,它也可以工作:
<?php
class webConfig {
public $SALT1 = "3525";
public $SALT2 = "2341";
public $SALT3;
public function __construct(){
// SET THE VALUE $SALT3 HERE INSTEAD
$this->SALT3 = $this->SALT1 . $this->SALT2;
}
}
可替换地;您甚至可以在构造函数中初始化类的所有属性,如下所示:
<?php
class webConfig {
public $SALT1; //<== NOTICE THAT THIS PROPERTY IS NOT INITIALIZED.
public $SALT2; //<== NOTICE THAT THIS PROPERTY IS NOT INITIALIZED.
public $SALT3; //<== NOTICE THAT THIS PROPERTY IS NOT INITIALIZED.
public function __construct(){
$this->SALT1 = "3525";
$this->SALT2 = "2341";
$this->SALT3 = $this->SALT1 . $this->SALT2; //<== YET AGAIN; SET THE VALUE
//<== OF $SALT3 LIKE BEFORE
}
}