2017-10-20 8 views
0

PHP OOPを学んでいるので、混乱する部分がたくさんあります。ここでは、public $ file_linkという単一の変数があり、デフォルト値をスーパーグローバル変数として割り当てようとしています。しかし、私はこのようにすることはできません、それは解析エラーを与える。私はファイル全体を何度もチェックしていますが、何が問題なのかを調べるために、私はpublicプロパティの変数としてデフォルト値を割り当てることができません。私はpublic変数のsetterメソッドが必要です。 (より理解しやすいように自分のコードのコメントを参照)パブリックプロパティの値を設定するメソッドが本当に必要なのですか? (これを行うためのよりよい方法)名前が示すようにPHP公開プロパティデフォルト値を変数として割り当てる

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

} 

と定数を下回る値は、実行時に変更できないことを、一度定義しても、コンストラクタ内で変更することはできませんようにあなたは、値を設定するコンストラクタを使用することができます

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

スクリプト

のあなたは参照してください可能性がありますhttp://php.net/manual/en/language.oop5.properties.php

クラスメンバーvをariablesは「プロパティ」と呼ばれます。また、 は「属性」や「フィールド」などの他の用語を使用して表示されますが、 は「プロパティ」を使用します。それらは、 のキーワードpublic、protected、またはprivateのいずれかを使用して定義されます。 に続いて、通常の変数宣言が続きます。 には、初期化を含めることができますが、この初期化は定数 の値でなければなりません。つまり、コンパイル時に評価できなければならず、 は評価するためにランタイム情報に依存してはいけません。

関連する問題