Php 实例化类并用一条语句分配属性

Php 实例化类并用一条语句分配属性,php,instantiation,Php,Instantiation,在C#中,给定这个类 公共类MyClass{ 公共int Id{get;set;} 公共int名称{get;set;} } 我可以这样做来实例化它: var实例=新的MyClass(){ Id=34, Name=“弗兰克” }; 这比这样做要好得多: var instance=new MyClass(); 实例Id=34; instance.Name=“Frank”; 我可以在PHP中执行此操作,或者这是我唯一的选择: $instance=new MyClass(); $instance-

在C#中,给定这个类

公共类MyClass{
公共int Id{get;set;}
公共int名称{get;set;}
}
我可以这样做来实例化它:

var实例=新的MyClass(){
Id=34,
Name=“弗兰克”
};
这比这样做要好得多:

var instance=new MyClass();
实例Id=34;
instance.Name=“Frank”;
我可以在PHP中执行此操作,或者这是我唯一的选择:

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

在PHP中,没有像C#那样一次设置所有字段的方法。您可以获得的最接近值如下所示:

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不以下划线开头)