当我学习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"];
}
}
答案 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 - 也就是说,它必须能够在编译时进行评估 不得依赖于运行时信息才能进行评估。