实例化类并使用一个语句分配属性

时间:2013-12-08 09:16:19

标签: php instantiation

在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 个答案:

答案 0 :(得分: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不是以该字符串开头的)。