PHP простая маршрутизация - ошибка неопределенного смещения 0 - PullRequest
0 голосов
/ 22 февраля 2020

Я делаю свой первый php роутер и перепробовал много уроков, например:

Простейший php роутер , Как построить базу c серверная сторона ...

И еще несколько, и, наконец, пошли на этот подход Создание PHP системы маршрутизации

Сначала моя проблема заключалась в том, что Я получил только пустые страницы, но после некоторой помощи отсюда я справился с этой проблемой, и теперь все работает нормально, за исключением того, что я получаю неопределенное смещение: 0 на моей стартовой странице.

Я использую array_shift, и после этого мой массив пуст:

array(0) { }

Так что я вижу, что это бесполезно для использования, но проблема в том, если я удалю его или возьму При другом подходе мой роутер перестает работать.

Вот мой маршрутизатор. php, где возникает проблема:

<?php

class Router{

    private $request;

    public function __construct($request){
        $this->request = $request;
    }

    public function get($route, $file){

        $uri = trim( $this->request, "/" );

        $uri = explode("/", $uri);
// var_dump($uri);
         $route = trim($route, "/");
         var_dump($route);
        // if(isset($uri) == $route){
            array_shift($uri);
             var_dump($uri);
            if($uri[0] == $route) {
            //  var_dump($uri);

             require __DIR__ . $file . '.php';
            } 
        // }

    }

}
?>

Я пытался обернуть $ uri [0] в оператор if (isset ..), но это также делает остановку роутера Я искал в руководстве php различные функции массива, но, честно говоря, я не понимаю, что делает половина из этого. По большей части я получаю большинство знаний от поиска на этом форуме и часто решаю его таким образом, но это действительно сильно застряло.

Кто-нибудь, кто знает, как избавиться от этой ошибки смещения?

1 Ответ

1 голос
/ 22 февраля 2020

При вызове $route->get($url, $file) вы используете "/ start" и "/ product" в качестве файлов. Внутри метода get вы затем загружаете "/start".".php", что приводит к загрузке «start. php» из каталога root жесткого диска (при условии, что вы используете XAMPP на Windows). Замените require $file . '.php'; на require __DIR__ . $file . '.php';, чтобы загрузить файл из текущего каталога.

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