PHP: call_user_func($callback, $this->request, ...$this->request->getBody() /* ['a' => string '1'] */); Cannot unpack array with string keys Что ещё за новости. p.s. PHP-7.4.5
ну и что, мне так и надо, я хочу в экшенах обращаться к ключам массива по именам переменных, в данном случае у меня в экшене перменная $a должна быть равна 1, так как я распаковываю массив ['a' => string '1'] а так-то перевод сообщения я знаю...
вот такое (так у меня сделано в другом движке) PHP: public static function dispatch($url) { if (!self::matchRoute($url)) { throw new Error('Страница не найдена'); } $controller = self::$namespace . self::$route['controller'] . 'Controller'; if (!class_exists($controller)) { throw new Error("Контроллер {$controller} не найден", 404); } $cObj = new $controller(self::$route); $action = self::$route['action'] . 'Action'; if (!method_exists($cObj, $action)) { throw new Error("Метод {$controller}::{$action} не найден", 404); } $cObj->$action(...self::$params /* ['a' => 1] */); $cObj->getView(); } // применение в экшене public function test($a) { var_dump($a); // 1 } public function test($b) { var_dump($b); // Unknown named parameter $a }
зачем слона привел, когда проблема в мухе ? http://sandbox.onlinephpfunctions.com/code/3430b4798fff751162c531752228874326fec870
зачем? мне переменные нужны такие, как ключи ))) я не хочу тупо любой переменной обращаться к ключам-значениям, мне нужно чтобы переменной $a присваивалось значение ключа массива - 'a', ты же сам так сделал и так у меня сделано в другом движке а то что ты предлагаешь, то оно будет выглядеть вот так http://sandbox.onlinephpfunctions.com/code/ab7c854d6de7fd66aa46302590f321b8579f7b41 а это - дичь --- Добавлено --- @MouseZver вот так работает PHP: // call_user_func($callback, $this->request, ...$this->request->getBody()); call_user_func_array($callback, $this->request->getBody()); но мне ведь просто $this->request ещё нужно передать