PHP在没有Constructor的情况下初始化类变量

时间:2010-12-03 22:15:12

标签: php

我有以下课程,例如

class A{
 public var1;
 public var2;
}

现在,我想创建这个类的对象,并执行以下操作:

$a = new A();
$a->var1 = 123;
$a->var2 = 987;

有没有更好的方法来做到这一点,因为有时在课堂上甚至可能有20个这样的变量。我只是在寻找压缩代码,并且没有为这个类使用构造函数。变量的值不是静态的(这就是为什么不使用静态关键字的原因)

我正在寻找更多我们为数组做的这种任务:

$arr = array(
'var1' => 123,
'var2' => 987
);

此外,我将如何绕过避免NullPointerException(当我尝试将此对象发送到启用.Net的Web服务时,有时会出现这种情况) - 这是可选的,因为我可以将它与类中的null变量联系起来,但不确定如何克服这个错误。

3 个答案:

答案 0 :(得分:1)

构造函数可以接受一个参数数组,这些参数包含这些类变量的值,您可以将这些值设置为构造函数中的类变量。要避免null,只需将您声明的每个类变量分配给一些基本值,例如空字符串,任何您不关心的值。

答案 1 :(得分:0)

有没有更好的方法为类的属性赋值?好吧,有多种方式,但其中一种不一定比另一种方式更好,而且它们都需要完成相似数量的代码。

无法回答您的.NET问题;我不熟悉它。

答案 2 :(得分:0)

您可以使用PHP8's Constructor Property Promotion

class A
{
    public function __construct(
        public $var1,
        public $var2,
        // Maybe more variables here
    ) {}
}

够酷了。您创建一个类及其属性,同时在构造函数中初始化它们。

有关详细信息,请参阅 the related RFC