Я пытаюсь настроить ядро на PHP, но у меня возникает ошибка. ¿Как это исправить?
Ошибка: Примечание: Попытка получить доступ к смещению массива для значения типа null в C: \ xampp \ htdocs \ project \ app \ library \ Core. php в строке 20
Извините, если это глупый вопрос, но я учусь. Я пытался исправить это, но не могу найти решение
Я пытаюсь сопоставить URL-адрес из браузера с этим массивом [0] -Controller [1] -Methods [2] -Parameters
<?php
/* Maping the url from browser
[0]-Controller
[1]-Methods
[2]-Parameters
*/
class Core{
private $currentController = 'pages';
private $currentMethod = 'index';
private $parameters = [];
//Constructor
public function __construct()
{
$url = $this->getUrl();
// Search if the controller exist
if (file_exists('../app/controllers/' .ucwords($url[0]).'.php')){ //Line 20
//Set the controller by default
$this->currentController = ucwords($url[0]);
//Unset initial index
unset($url[0]);
}
//require the controller
require_once '../app/controllers/' . $this->currentController . '.php';
$this->currentController = new $this->currentController;
//Check the second part from url (Method)
if (isset($url[1])){
if (method_exists($this->currentController, $url[1])){
$this->currentMethod = $url[1];
unset($url[1]);
}
}
//Get the parameters possibels (Ternery operator)
$this->parameters[] = $url ? array_values($url) : [];
//Callback with parameters array
call_user_func_array([$this->currentController, $this->currentMethod], $this->parameters);
unset($url[2]);
}
public function getUrl(){
if (isset($_GET['url'])){
//Cut the right spaces after slash
$url = rtrim($_GET['url'],'/');
//This will be read like url
$url = filter_var($url, FILTER_SANITIZE_URL);
//This function require one delimiter and the url (string)
$url = explode('/', $url);
return $url;
}
}
}
?>