2017-10-20 70 views
0

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

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"]; 
    } 
} 

回答

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

类板v可持续性被称为“属性”。您也可以看到它们使用其他术语(如“属性”或“字段”)引用,但 为了本参考的目的,我们将使用“属性”。它们是 ,通过使用关键字public,protected或private之一定义, 后跟正常的变量声明。 这个声明可能包含一个初始化,但是这个初始化必须是一个常量 值 - 也就是说,它必须能够在编译时进行评估,并且 必须不依赖于运行时信息才能被评估。