Магический метод __call() PHP

95
07 февраля 2021, 21:40

С помощью магического метода call передаю в функцию параметры в виде массива:

$response = $this->get(array("shop" => $shop, "resource" => $resource, "update" => NULL));

Причём $shop - обьект, $resource - массив. Как потом достучаться до этих значений ключей? На $arguments["shop"] - пишет undefined index.

Answer 1

Так называемый магический метод __call требует быть объявленным с двумя аргументами:

  1. строкой имени вызываемого метода
  2. массивом переданных методу аргументов

Массив аргументов передаётся в виде числового массива, в порядке указанных в вызове метода аргументов.

class A
{
    public function __call($method, array $args)
    {
        var_dump($method, $args);
    }
}
$a = new A;
$a->get(array(1,2,3));

Так, если вы хотите обратиться к первому параметру вызванного метода get - вам нужен $args[0].