namespace и проверка на существование класса

malina95

Дракула кода:)
дайте ссылки, но не на великаны, на простые, великаны для сайта визитки это черезчур
 

flr

Новичок
Ну, проинспектировать конечно можно,
PHP:
$method = new ReflectionMethod($controllerClass, $actionMethod);
$paramsCount = $method->getNumberOfRequiredParameters()
Но само собой это жесть. Хотя опять же для сайта визитки вообще пофиг.

Лучше воспользоваться нормальным роутером.
Если предложенный мной ранее для тебя слишком наворочен, то попробуй этот:
https://github.com/dannyvankooten/PHP-Router
 

malina95

Дракула кода:)
Спасибо, но всё равно не то, он сложный и непонятный, зачем разбивать echo $router->generate('users_edit', array('id' => 5)); на App/Controllers/users/5/edit/ ...? Не пойму я этой логики, всё равно спасибо, ещё пару дней поищу, и в сроки не успею((( Провал...
 

hell0w0rd

Продвинутый новичок
Чего на чего разбивать? Что не понимаешь? По моему просто хренью страдаешь и не хочешь в сроки успеть:)
 

malina95

Дракула кода:)
я как рах ъочу успеть, но мне нужен нормальный роутер, лёгкий и доступный для обычного человека, с регулярками я не дружу, вот и прошу помощи... Не стоит грозничать...
 

malina95

Дракула кода:)
или автоматический, адаптированный под пространство имён, или ручной с регулярками,
это похож на нормальный, но для меня он слишком запутанный, ооп только учу, там чёрт ногу сломит чтобы убрать разбиение, и подставить Controller после имени контроллера, короче я уже столько их перебрал за этот день, что уже не могу различить где гавно а где золото. Весь день убил на этот грёбанный роутер, я понимаю, первый заказ на сайт, но так я никогда не тупил
 

hell0w0rd

Продвинутый новичок
Возьми микро-фреймворк. Попробуй разобраться, и затем уже задавай вопросы.
Советую - silex.
 

malina95

Дракула кода:)
Я бы с удовольствием, я хотел поковырять все фреймоврки, но тут на меня свалили заказ, реально свалили, и сказали делай и всё. Пытаюсь сделать, MVC структура уже готова, использую namespace, всё есть, а с роутером единственным лажа выходит, я вас очень прошу помогите, будто у вас не было первых заказов, вы должны меня понять.
 

hell0w0rd

Продвинутый новичок
Не завидую я тому кто будет этот проект после тебя разбирать. Сформулируй четко проблему, и почему ее не получается решить одним из предложенных выше роутеров. На данный момент полное ощущение надуманности проблемы
 

malina95

Дракула кода:)
Попробую всё по полочкам:

Контроллеры у меня находятся в папке/по пути "App/Controllers/IndexController.php"

У всех контроллеров есть namespace App\Controllers;

Мне нужен роутер по таким признакам:

В адрессе должно быть только имя контроллера index, потом первую букву всё равно сделаю большой,

Потом должен быть метод index который потом преобразуется в indexAction();

И параметры как в любом фреймворке типа id/5/email/[email protected] которые потом должны конвертироваться в 2 переменные типа $id = 5; $email = '[email protected]';

Параметров может быть 1, 2, 3 неизвестно,

Так вот как сделать такой роутер чтобы работал именно так, и если такого контроллера или метода или параметров нет, выдавать ошибку 404.

Надеюсь теперь суть проблемы ясна, или же можно попробовать ручной, с регулярками типа user/:username но я в них не шарю
 

hell0w0rd

Продвинутый новичок
Зачем indexAction на все кидать? А если нет indexAction?
Роутеры устроены так - есть роутер, есть роут, есть урл-генератор. У роутов есть правила по которым роутер понимает что данный запрос подходит по одному из роутов и вызывает контроллер который под него подходит. Урл-генератор принимает название роута и генерирует для него ссылку, это нужно для того, чтобы безболезненно менять схему маршрутизации в любой момент - главное придумать начальные имена роутам.
Поэтому ты берешь ручками, создаешь роутер и ему скармливаешь свои роуты, в зависимости от реализации роутера - это бывает по разному
https://github.com/fabpot/Create-Your-Framework/blob/master/book/part04.rst - советую почитать
 
Сверху