动态调用php对象属性
在PHP7文档中,有。 我正试图用它来动态调用属性。此代码仅打印动态调用php对象属性,php,object,Php,Object,在PHP7文档中,有。 我正试图用它来动态调用属性。此代码仅打印v1。我想让它打印v1pqrxyz 我该怎么做?我使用的是PHP版本7.0 class test{ public $v1 = "v1"; public function f1($a){ return $a; } public function f2($b){ return $b; } } $test1 = new test(); $arr = ['v
v1
。我想让它打印v1pqrxyz
我该怎么做?我使用的是PHP版本7.0
class test{
public $v1 = "v1";
public function f1($a){
return $a;
}
public function f2($b){
return $b;
}
}
$test1 = new test();
$arr = ['v1', 'f1("pqr")', 'f2("xyz")'];
foreach ($arr as $value) {
echo $test1->{$value};
}
尝试使用
call\u user\u func()
你构建它的方式是不可能的,即使它看起来很有希望。但是,对于方法,您可以执行以下操作
$arr = [
['f1', ['pqr']],
['f2', ['xyz']],
# or some multi argument function
#['f3', ['a', 'b']],
];
foreach ($arr as $value) {
list($method, $args) = $value;
echo $test1->$method(...$args);
}
成员可以这样访问
$arr = [
'v1'
];
foreach ($arr as $member) {
echo $test1->$member;
}
您需要
eval
或正则表达式来处理字符串表达式,如'f1(“pqr”)
。两者都不安全和/或容易出错。你不应该这样做。只要可能,请使用['v1',['f1',['arg1','arg2']],'v2']
来代替。这样做时我会出错警告:call\u user\u func()希望参数1是有效的回调,类“test”没有方法“f1()”
$arr = [
'v1'
];
foreach ($arr as $member) {
echo $test1->$member;
}