php公共属性默认值赋值为变量

时间:2017-10-20 09:18:52

标签: php

当我学习PHP OOP时,我看到,有很多令人困惑的部分。这里我有一个名为 public $ file_link 的变量,我试图将默认值指定为超全局变量。但我不能这样做,它给出了一个解析错误。我一遍又一遍地检查整个文件,找到问题所在,我发现我无法在公共属性中将默认值指定为变量。所以我需要一个公共变量的setter方法。 (请参阅我的代码评论以便更好地理解)。我真的需要一个方法来设置公共属性的值??? (更好的方法)

class File_Link {
    public $file_link = 'http://localhost' . $_SERVER["PHP_SELF"];      // CANNOT ASSIGN DEFAULT VALUE
    const FILE_LINK = 'myRoot' . $_SERVER['PHP_SELF'];                  // CANNOT USE LIKE THIS

    public $variable_name = "value";
    public $variable_name_clone = $variable_name; //                    // I GET IT -> I CANNOT USE LIKE THIS BUT IT IS A PUBLIC VARIABLE

    /*
        For a public variable i need use a setter method?????           // FOR A SINGLE LINE I HAVE TO USE THE BELOW CODE WHAT THE >>>>>
    */

    public $host_link = 'http://localhost';                             // THIS WORKS PERFECTLY
    public setFileLink() {
        $this->file_link . $_SERVER["PHP_SELF"];
    }
}

1 个答案:

答案 0 :(得分:3)

您可以使用构造函数来设置值,如下所示

class File_Link
{

    public $file_link;

    public $variable_name = "value";
    public $variable_name_clone;

    public function __construct()
    {
        $this->file_link='http://localhost' . $_SERVER["PHP_SELF"];
        $this->variable_name_clone = $this->variable_name;
    }

}

并且一旦定义了构造函数,就不能更改常量,顾名思义,在执行脚本期间该值不能改变

您可以参考:http://php.net/manual/en/language.oop5.properties.php

  

类成员变量称为“属性”。你也可以看到它们   引用使用其他术语,如“属性”或“字段”,但   出于本参考的目的,我们将使用“属性”。他们是   使用关键字public,protected或private之一定义,   然后是正常的变量声明。 此声明可能   包括初始化,但这个初始化必须是一个常量   value - 也就是说,它必须能够在编译时进行评估   不得依赖于运行时信息才能进行评估。