Ошибка при попытке настроить и получить доступ к массиву в ядре - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь настроить ядро ​​на 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;
            }      
        }
    }

?>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...