2013-12-08 104 views
0

在C#中分配的屬性,給這個類實例化類,也有一個說法

public class MyClass { 
    public int Id { get; set; } 
    public int Name { get; set; } 
} 

我能做到這一點,以實例化它:

var instance = new MyClass(){ 
    Id = 34, 
    Name = "Frank" 
}; 

比這樣更好了很多:

var instance = new MyClass(); 
instance.Id = 34; 
instance.Name = "Frank"; 

我能做到這一點在PHP中,或者是我唯一的選擇是:

$instance = new MyClass(); 
$instance->Id = 34; 
$instance->Name = "Frank"; 

回答

1

沒有辦法像C#一樣在PHP中一次設置所有的字段。你可以得到最接近的是如下:

class MyClass { 
    function __construct(array $data = array()) { 
     foreach($data as $key => $value) { 
      $this->$key = $value; 
     } 
    } 
} 

$instance = new MyClass(array(
    'Id' => 34, 
    'Name' => 'Peter', 
)); 

你應該修改一下,讓私人領域是不可訪問(可能是一個命名約定,你擁有所有私人領域開始與一個下劃線和檢查的foreach內$ key並不以此開頭)。

+0

歡呼聲。爲我的模型製作了一個基類。 – sennett

相關問題