而不是使用
$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;
正如你看到的,这种方法使得大括号没有必要,给读者至少一些什么组成的属性名称描述。 )
PS print
只是用来说明变量名表达的潜在复杂性; 而这种代码在认证测试常用的,它是一个巨大的“禁忌”在生产中使用这样的事情。 )