LINUX.ORG.RU

PHP - вызывать функцию по названию в url

 ,


0

1

Доброго времени суток! Помню, когда ковырял CodeIgniter, там была такая интересная штука, как метод вызов метода контроллера через ссылку. Например, есть контроллер User, у которого есть метод add(). Можно было перейти по ссылке вила site.com/user/add и выполнялся код этого метода. Подскажите пожалуйста ламеру, как такое реализовать?


Что-то типа

if(preg_match('!/(\w+)/(\w+)$!', $_SERVER['REQUEST_URI'], $m))
    return call_user_func([$m[1], $m[2]]);

// или, если метод не статический
if(preg_match('!/(\w+)/(\w+)$!', $_SERVER['REQUEST_URI'], $m))
{
    $controller = new $m[1];
    return call_user_func([$controller, $m[2]])
}

Естественно, по хорошему ещё нужно проверку добавить, чтобы не любой класс/метод вызывался, а только разрешённые.

KRoN73 ★★★★★
()

Ну и посмотри сорцы codeigniter, делов то.

n0044h
()

Велосипедим роутер?

ritsufag ★★★★★
()
$method = 'add';
$object->$method();


Про то, что нужно проверять уже сказали.

goingUp ★★★★★
()

google://php router

Deleted
()

То, что тебе нужно называется «роутинг». Глянь на эту тему, с ходу всё, что тебе тут предложили - костыли. Не торопись, ознакомься с темой, тем более, что она достаточно не объемная.

VirRaa ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.