对象属性的 PHP 动态名称
而不是使用
$object->my_property
我想做这样的事情
$object->"my_".$variable
而不是使用
$object->my_property
我想做这样的事情
$object->"my_".$variable
使用大括号,如下所示:
$object->{'my_' . $variable}
怎么样:
$object->{"my_$variable"};
我想这部分PHP文档可能会有所帮助。简而言之,可以在大括号内编写任何任意表达式;其结果(字符串)成为要寻址的属性的名称。例如:
$x = new StdClass();
$x->s1 = 'def';
echo $x->{'s' . print("abc\n")};
// prints
// abc
// def
...然而,通常将此表达式的结果存储到临时变量中更具可读性(顺便说一句,可以为其指定一个有意义的名称)。喜欢这个:
$x = new StdClass();
$x->s1 = 'def';
$someWeirdPropertyName = 's' . print("abc\n"); // becomes 's1'.
echo $x->$someWeirdPropertyName;
如您所见,此方法使大括号不是必需的,并且至少为读者提供了一些关于构成属性名称的描述。)
P.S.仅用于说明变量名称表达式的潜在复杂性;虽然这种代码通常用于认证测试,但在生产中使用这些东西是一个很大的“禁忌”。)print