Доброго времени суток. У меня загвоздка на ЧПУ. Прописал правила в .htaccess, чтоб все запросы шли на index.php. Дальше парсю полученную ссылку и подгружаю нужный класс и его метод. Вот тут главный вопрос! Как определить, что вызван метод, которому нужно передавать аргументы? Например, есть 2 метода Код (Text): viewOne($id) и Код (Text): viewAll() . Код (Text): exmp.ru/city/viewOne/3 . вызываю метод view класса city и передаю туда цифру 3. Код (Text): exmp.ru/city/viewAll/ вызываю метод view класса city без параметров. Как определить на момент include_once в index.php какой метод вызывается и сколько параметров нужно передать?
А не правильней ли сделать так, чтобы не надо было этого определять? Если URL совпал с неким шаблоном маршрута (включая все аргументы, конечно), то вызываем нужный метод. Если аргументы отсутствуют, значит URL не совпал с шаблоном и метод не будет вызван. Схематично так: Код (PHP): if (preg_match('~^/user/(\d+)$~', $uri, $matches)) { $userController->showAction($matches[1]); } elseif (preg_match('~^/topic/move/(\w+)/(\w+)$~', $uri, $matches)) { $topicController->moveAction($matches[1], $matches[2]); } Как можно вызвать эти методы неправильно?! Ну а если применить эту схему к списку маршрутов и обработке в цикле, то call_user_func_array() поможет повторить этот фокус с произвольным числом аргументов. Альтернативное решение: у всех подобных методов использовать один набор аргументов. Типа: myAction(array $args) и только так.