我有以下课程,例如
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变量联系起来,但不确定如何克服这个错误。
答案 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。