可以在一个操作中构造PHP对象并设置它们的变量吗?

Amb*_*pel 7 php oop constructor object

在perl中,我习惯了

my $foo = new WhatEver( bar => 'baz' );
Run Code Online (Sandbox Code Playgroud)

现在我想弄清楚是否可以用这种方式构造PHP对象.我只看到这个:

my $foo = new WhatEver();
$foo->{bar} = 'baz';
Run Code Online (Sandbox Code Playgroud)

有可能一步到位吗?

Séb*_*uld 3

您可以按如下方式布置构造函数:

 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;
                }
             }
         }
     }
 }
Run Code Online (Sandbox Code Playgroud)

这有一系列缺点:

  • 这是低效的
  • 您创建的变量不会显示在您使用的任何文档软件上
  • 这为所有形式的偷懒行为敞开了大门

然而,它还具有以下优点:

  • 这可以非常安全地扩展
  • 它允许您延迟实现变量
  • 它还允许您设置私有变量,前提是您知道它们的名称。如果不被滥用的话,这方面就相当不错了。