@gomerIT

Class name must be a valid object or a string in Как исправить?

Я получаю ошибку в логах
Uncaught Error: Class name must be a valid object or a string in /home/c/cs27399/public_html/controllers/User.php:25\nStack trace:\n#0 /home/c/cs27399/public_html/core/Router.php(43): UserController->userInfoAction()\n#1 /home/c/cs27399/public_html/index.php(9): Router->run()\n#2 {main}\n thrown in /home/c/cs27399/public_html/controllers/User.php on line 25

index.php
<?php session_start();

define('ROOT', $_SERVER['DOCUMENT_ROOT']);

require('core/Router.php');
require('core/DB.php');

$route = new Router();
$route->run(); // На эту строку ругается


Router.php
<?php


class Router
{
    protected $routes = [];
    protected $params = [];
    public function __construct()
    {
        $this->routes = require ROOT . '/config/routes.php';
    }
    private function getURI()
    {
        if (!empty($_SERVER['REQUEST_URI'])) {
            return trim($_SERVER['REQUEST_URI'], '/');
        }
    }
    


    public function match($uri)
    {
        $routeURI = preg_replace('/\d{1,}/','\d',$uri);
        if(isset($this->routes[$routeURI])){
            $this->params = $this->routes[$routeURI];
            return true;
        };
        
        return false;
    }

    public function run()
    {
        $uri = $this->getURI();
        if ($this->match($uri)) {
            $controllerFileName = ucfirst($this->params['controller']);
            $controllerFile = ROOT . '/controllers/' . $controllerFileName  . '.php';
/// ВОТ ЗДЕСЬ =>
           if (is_file($controllerFile)) {
                require_once $controllerFile;
                $classNameController = $controllerFileName.'Controller';
                $controller = new $classNameController($this->params); //Отправляем данные из routing в контроллер и создаем обьект с controller'ом
                $actionName = $this->params['action'].'Action';
                $controller->$actionName();
            } /// <= ВОТ ЗДЕСЬ 
        } else {
          
         require_once ROOT .'/index.html';
        }
    }
}

Users.php
<?php
require ROOT . '/core/Controller.php';

class UserController extends core\Controller
{
   public function signupAction()
   {
      header('Content-type: application/json');
      $dataRequest = json_decode(file_get_contents('php://input'));
      $res = $this->model::signup($dataRequest);  // На эту строку ругается
      print_r(json_encode($res));
   }
   public function signinAction()
   {
      header('Content-type: application/json');
      $dataRequest = json_decode(file_get_contents('php://input'));
      $res = $this->model::signin($dataRequest);  // На эту строку ругается
      $code = $res['error']['code'];
      http_response_code($code);
      print_r(json_encode($res));
   }
}

По ошибке понятно что ожидает строку или объект, но н и так является строкой, разве нет? Я выделил часть блока, который отвечает за это.
  • Вопрос задан
  • 908 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы