Я получаю ошибку в логах
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));
}
}
По ошибке понятно что ожидает строку или объект, но н и так является строкой, разве нет? Я выделил часть блока, который отвечает за это.