Динамически вызывать свойство объекта php - PullRequest
0 голосов
/ 26 февраля 2019

В документации php 7 есть http://php.net/manual/en/migration70.incompatible.php#migration70.incompatible.variable-handling.indirect. Я пытаюсь использовать это для динамического вызова свойства.Этот код печатает только 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};
}

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Невозможно, как вы его построили, даже если это выглядит многообещающе.Но вы можете сделать следующее для методов

$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;
}
0 голосов
/ 26 февраля 2019

Попробуйте использовать call_user_func()

 foreach ($arr as $value) {
   echo call_user_func([$test1,$value]);
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...