簡體   English   中英

為什么我不能在PHP中為類變量定義連接字符串?

[英]Why can't I concat strings for class variable definition in PHP?

在我的類中,為什么我可以像這樣同時聲明一個變量並設置其值

 public $CSS_reset = "someValue";

當我嘗試附加兩個這樣的變量或字符串時,仍然發生語法錯誤

 public $CSS_reset = "someValue" . "appendedValue";   

語法錯誤是解析錯誤:語法錯誤,意外的“。”,期望為“,”或“;”

這是我的代碼...沒有語法錯誤

class MyClass {

    private $css = "Mysite/CSS/";
    private $js = "Mysite/JS/"; 

    public $CSS_reset;        //Declare $CSS_reset but set it's value in the constructor
    public $CSS_styles; 


    function __construct() 
    {
         $CSS_reset = "reset.css" . "reset2.css";
         $CSS_styles = "styles.css" . "styles2.css";

    }

}

這是我的語法錯誤代碼...

class MyClass {

    private $css = "Mysite/CSS/";
    private $js = "Mysite/JS/"; 

    public $CSS_reset = "reset.css" . "reset2.css";
    public $CSS_styles = "styles.css" . "styles2.css";

}

並不是我不想使用構造函數,但是語法錯誤的第二個選項是更少的代碼。

您嘗試將屬性css視為靜態,但並非如此。

function __construct() 
{
     $this->CSS_reset = $this->css . "reset.css";
     $this->CSS_styles = $this->css . "styles.css";

}

在構造函數中,您的類對象已經存在-但是在語法錯誤的代碼中不存在。 這就是為什么您不能使用$this->css甚至是var $xxx = "foo"."bar" 因此,您必須使用構造函數或將其編寫為:

class MyClass {

    private $css = "Mysite/CSS/";
    private $js = "Mysite/JS/"; 

    public $CSS_reset = "Mysite/CSS/reset.css";
    public $CSS_styles = "Mysite/CSS/styles.css"; 

}

您不能在類方法/構造函數外部進行這樣的聲明。

在調用__construct之前,在屬性定義中不使用$this

class MyClass {

    private $css = "Mysite/CSS/";
    private $js = "Mysite/JS/";

    public $CSS_reset;
    public $CSS_styles; 

    public function __construct()
    {
        $CSS_reset =  $this->css . "reset.css";
        $CSS_styles = self::$css . "styles.css";
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM