2017-08-28 84 views
-2

我知道這是一個常見問題,但我看到的問題(約10)比我一直困惑。如何在php中使用構造函數來初始化實例變量

我的問題包含在代碼中作爲註釋。

我有三個字段

public class Model 
{ 
    public $prop1; 
    public $prop2; 
    public $prop3; 

    public function _construct($params) // doubt 1: Do I have to pass an array to a constructor, can't I pass the parameters individually 
     { 
       // doubt 2: How to assign the value to the instance variables 
     } 
} 

$model = new \App\Model($whatToPuthere); //doubt 3: How to provide the constructor parameters 
+1

你讀過關於[類和對象](http://php.net/manual/en/language.oop5.php)的PHP文檔嗎?現在您需要知道的所有內容都在這裏進行了解釋,並附有示例。 – axiac

+0

有一個關於一切的文檔「如果我們遵循這種思路,沒有理由有stackoverflow,如果我停下來閱讀我面對的每一個問題的文檔,將需要很長的時間來完成我的任務。我的問題是非常基本的應該有一個概念,但在這一刻我沒有時間閱讀文檔 –

+0

除了我閱讀文檔,但我也感到困惑它。PHP中的構造函數對我來說很困惑,你應該有詢問我是否閱讀了文檔,在downvote之前! –

回答

1

正確的方法去做一類是這樣的:

public class Model 
{ 
    public $prop1; 
    public $prop2; 
    public $prop3; 

    public function __construct($prop1, $prop2, $prop3) 
    { 
      $this->prop1 = $prop1; 
      $this->prop2 = $prop2; 
      $this->prop3 = $prop3; 
    } 
} 

$model = new \App\Model("prop1_value", "prop2_value", "prop3_value"); 
+2

請加上解釋 –

+0

您的代碼無效。您的構造方法無效。 – Spectarion

+1

'公共類'是不夠的一個downvote? – axiac

0

你是非常接近,訪問當前實例變量,你需要使用$this。您還需要爲構造方法使用2個下劃線。除此之外,將它視爲另一個功能。

class Model { 

    public $prop1; 
    public $prop2; 
    public $prop3; 

    public function __construct($prop1, $prop2, $prop3) { 
     $this->prop1 = $prop1; 
     $this->prop2 = $prop2; 
     $this->prop3 = $prop2; 
    } 

} 

$model = new \App\Model("prop1", "prop2", "prop3"); 
0

它是由你來決定什麼是你\App\Model類用戶使用更方便。這是一個使用固定數量屬性的例子。

class Model 
{ 
    public $prop1; 
    public $prop2; 
    public $prop3; 

    public function __construct($prop1, $prop2, $prop3) 
    { 
     $this->prop1 = $prop1; 
     $this->prop2 = $prop2; 
     $this->prop3 = $prop3; 
    } 
} 

$model = new \App\Model('Property 1', 'Property 2', 'Property 3'); 

如果你打算使用動態數量的屬性,你應該考慮使用數組作爲參數。

class Model 
{ 
    public $prop1; 
    public $prop2; 
    public $prop3; 

    public function __construct(array $properties) 
    { 
     $this->prop1 = $properties['prop1']; 
     $this->prop2 = $properties['prop2']; 
     $this->prop3 = $properties['prop3']; 
    } 
} 

$model = new \App\Model(
    array('prop1' => 'Property 1', 'prop2' => 'Property 2', 'prop3' => 'Property 3') 
); 
+1

'公共課程'無效! –

相關問題