Можно ли как-то сделать, что-бы самостоятельно искался нужный метод

Рейтинг: 0Ответов: 1Опубликовано: 21.05.2023

Есть заранее прописанные методы, совпадающие с названием php файлов-страниц, а так же функция, которая возвращает названия всех методов:

class Routes
{
    public function home(){}
    public function news(){}
 
    public function getNameRoute(){
        return get_class_methods(Routes::class);
    }

}

Далее идет функция поиска имени метода по uri и, если найдено совпадение, она отдает нужну одноименную страницу

    $route = new Routes();

    $uri = $_SERVER['REQUEST_URI'];
    $pageName = 'content'.$uri.'.php';
    $routeName = $route->getNameRoute();
    $errors = 1;

   foreach ($routeName as $name){
       if('/'.$name === $uri){
           require "$pageName";
           $errors = 0;
           break;
       }
   }
    if(!empty($errors)){
        require 'content/error.php';
    }

Можно-ли как-то сделать, чтобы require '...' был внутри метода и искалось так же название метода, с его последующим вызовом. Извиняюсь за возможно не понятную формулировку

Ответы

▲ 0Принят

Если я всё правильно понял, вы хотите вызывать метод роутера, соответствующий пути:

foreach ($routeName as $name) {
   if('/'.$name === $uri) {
     $route->$name();
     $errors = 0;
     break;
   }
}

Внутрь методов роутера нужно добавить требуемый функционал (require, например)