为对象的属性PHP动态名称(PHP dynamic name for object property

2019-06-27 07:38发布

而不是使用

$object->my_property

我想要做这样的事情

$object->"my_".$variable

Answer 1:

使用大括号,如下所示:

$object->{'my_' . $variable}


Answer 2:

这个怎么样:

$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;

正如你看到的,这种方法使得大括号没有必要,给读者至少一些什么组成的属性名称描述。 )

PS print只是用来说明变量名表达的潜在复杂性; 而这种代码在认证测试常用的,它是一个巨大的“禁忌”在生产中使用这样的事情。 )



文章来源: PHP dynamic name for object property
标签: php oop