在没有函数的类中设置来自其他变量的变量

时间:2016-11-20 12:05:38

标签: php oop

我开始在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;
}

1 个答案:

答案 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
      }
    }