Все оч. последовательно, если под правильным углом смотреть. Ты про что? Давай конкретнее. Ты тогда тупил не по-детски. Может, чего недопонял. Вообще я даже в этой теме писал, что всегда есть соблазн (в том числе и у меня) что-нить почикать или прилепить к текущему урлу, но нужно стараться себя сдерживать. Gency? Я к разработке этой CMS имею весьма опосредованное отношение, только доки пишу. Или ты про то, что я в блоге писал? У меня там отдельная ветка PHP/MySQL FAQ. Прямого отношения к CMS тоже не имеет. Какой костыль? Давай конкретнее.
@MouseZver, если не ошибаюсь, тогда речь шла о том, что фронт различал последние слаги в пути вроде slug и slug? (с вопросом на конце, но без строки параметров). Какое отношение это имеет к теме ТСа? --- Добавлено --- Кстати, этот функционал убрали из того фронта. Будем считать, что прислушались к твоему мнению --- Добавлено --- Но при /bla-bla-bla/slug? дергается 404-ая даже при корректном /bla-bla-bla/slug, так что по сути фронт все равно различает такие адреса, просто обработка первого теперь делается по-другому.
а Вы тут без меня что? Режете строку по амперсанду? Или по знаку вопроса? Только зачем, если всё уже есть: PHP: var_dump(parse_url(ltrim($_SERVER['REQUEST_URI'], '/'), PHP_URL_PATH), $_GET); или я что-то не уловил?
Уловил. Затем, что parse_url сложная и коварная Та же explode значительно проще и надежнее. --- Добавлено --- PHP: list($p) = explode('?', $_SERVER['REQUEST_URI'], 2);
ну я такой варик тоже знаю, просто я с явными гетами не работаю, поэтому мне кажется, что это было так давно уже --- Добавлено --- ну вообще по логике очерёдность должна быть такая, да, в trim всё остальное поместить (кроме вардампа естественно)
Это из фронта (со встроенным роутером). Я туда тоже не часто заглядываю --- Добавлено --- Статья была про то, как сделать фронт. Взял для показа код из одного нашего фронта.
не ну если как бы тебе платят за воздух то чё бы нет. А так бедный твой клиент. А если ты сам себе клиент. То походу время у тебя безграничное.
это ты пьяный походу (а человек писавший этот код писал его так чтобы продакшн не сломался если работают с ним такие вот криворучки всякие). Что будет если будет возвращатсья в is_file true, а $dir будет отличная от \dirname($dir)?
я не понял что ты промямлил тут какой человек, какой продакшн, какой сломался криворучки ты зачем сделал a = b = 1 и потом проверил если a === 1 то вернул b, кого ты наебать хочешь, нанимателя, который, как лох платит тебе за лишние строки кода, включая PHPDoc? и каждый раз по три, как минимум, раза dirname-dirname-dirname, dirname-dirname-dirname, dirname-dirname-dirname, dirname-dirname-dirname....
Там алгоритм понятный. Они от расположения кернел-класса ищут вверх по дереву директорий, пока не обнаружат composer.json. По мне тоже проще в стартовом файле константу определить один раз, и радоваться, но, видимо, пытались не привязываться к конкретной структуре каталогов.
да не только константой делается, можно chdir(dirname(__DIR__)) сделать и просто скрипт будет сидеть в якобы в руте или там в определённых случаях getcwd и будет нам рут, масса вариантов, кто сказал, что именно ФВ его реализует правильно? он это делает ДЛЯ СЕБЯ, а если мне так не надо и я отступил от навязанных правил ФВ, то я оказывается - криворукий, тогда почему их так много этих ФВ, если правильный - один? просто подстраховали пользователей своего ФВ, а это ли не костыль? --- Добавлено --- p.s. и там ещё у dirname есть второй параметр, чтобы кучей dirname не ходить вверх по директориям
и там ещё у dirname есть второй параметр, чтобы кучей dirname не поразмыслил: не получится привязать контроллер и экшен, почему? Потому что я могу правилом роутера сделать подмену и фейковый REQUEST_URI не совпадёт с контроллер::экшен, который будет вызван, следовательно в html-разметку пагинации не попадёт REQUEST_URI, а попадёт контроллер::экшен, что приведёт к ошибке - раз и запалит контроллер::экшен, который подменяет REQUEST_URI - два
Потому что симфони может работать как отдельными компонентами так и целым приложением. В таком случае неизвестно где конкретно будет корень проекта. Да и у метода есть комментарий, достаточно понятный. Код (Text): Gets the application root dir (path of the project's composer file). Возвращаем корень проекта от composer.json, там где он там и vendor. А значит для текущего проекта там и есть корень, логика на мой взгляд вполне нормальная. Да и вообще symfony писали не идиоты как-бы. Если так написали значит так было нужно. Интересно почему разберись не интересно, не понимаешь @Вероломство - не оскорбляй труд других людей. Раз уж сам свой не ценишь.
Есть, но они не знают, сколько уровней ставить. Кернел класс можно где угодно в проекте засунуть Не костыль, цель - универсальность, и, как сказал @askanim, цель была - разработать фреймворк, который можно использовать модульно, а не только в каркасе. Чем-то за универсальность всегда платить приходится, но я не думаю, что этот поиск composer.json сильно отрицательно сказывается. Код на фрейморке всё равно всегда лучше самописа - потому что, если сопровождение перейдёт к другому программисту, знающему фрейморк, он намного быстрее разберётся, что там и где происходит.