在perl中我习惯了
my $foo = new WhatEver( bar => 'baz' );
现在我想知道是否可以用这种方式构造 PHP 对象。我只看到这个:
my $foo = new WhatEver();
$foo->{bar} = 'baz';
是否可以一步完成?
最佳答案
您可以按如下方式布置您的构造函数:
class MyClass {
public function __construct($obj=null) {
if ($obj && $obj instanceof Traversable || is_array($obj)) {
foreach ($obj as $k => $v) {
if (property_exists($this,$k)) {
$this->{$k} = $v;
}
}
}
}
}
这有一系列缺点:
- 这是低效的
- 您创建的变量不会显示在您使用的任何文档软件上
- 这是对所有形式的懒惰敞开的大门
但是,它也有以下好处:
- 这可以很安全地扩展
- 它允许您延迟实现变量
- 它还允许您设置私有(private)变量,前提是您知道它们的名称。如果不被滥用,在这方面是相当不错的。
关于php - 是否可以在一次操作中构造 PHP 对象并设置它们的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16847776/