call_user_func() expects parameter 1 to be a valid callback

Рейтинг: 0Ответов: 1Опубликовано: 23.01.2023

call_user_func получаю эту ошибку при запуске

public function run()
        {
            $uri = $this->getURI();
    
            foreach ($this->routes as $uriPattern => $path) {
                
                if (preg_match("~$uriPattern~", $uri)) {
                    
                    $internalRoute = preg_replace("~$uriPattern~", $path, $uri);
                    
                    $segments = explode('/', $internalRoute);
                    
                    $controllerName = array_shift($segments).'Controller';
                    $controllerName = ucfirst($controllerName);
                    
                    $actionName = 'action'.ucfirst(array_shift($segments));
                    
                    $parameters = $segments;
                    
                    $controllerFile = ROOT.'/app/controllers/'.$controllerName.'.php';
                    if (is_file($controllerFile)) {
                        $controllerName = sprintf("\App\controllers\%s", $controllerName);
                        $controllerObject = new $controllerName;
                    }
                    
    
                    $result = call_user_func_array(array($controllerObject, $actionName), $parameters);
    
                    if ($result != null) {
                        break;
                    }
                }
            }
        }
    }

Ответы

▲ 2

Это сообщение об ошибке указывает, что первый параметр, переданный функции call_user_func(), не является допустимым обратным вызовом. Обратный вызов — это функция или метод, который можно передать в качестве аргумента другой функции и выполнить позже. В этом случае кажется, что функция пытается вызвать метод для объекта, но метод не существует или объект не создан должным образом. Вы должны проверить имя класса и метода и убедиться, что файл класса включен до создания объекта. Проверьте правильность параметров $controllerName, $actionName и $parameters и создание экземпляра класса. и убедитесь, что файл класса включен до создания объекта.