За последние 24 часа нас посетили 18574 программиста и 1603 робота. Сейчас ищут 889 программистов ...

REQUEST_URI без номера страницы пагинации

Тема в разделе "PHP для новичков", создана пользователем Вероломство, 12 мар 2021.

  1. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    Все оч. последовательно, если под правильным углом смотреть.

    Ты про что? Давай конкретнее. Ты тогда тупил не по-детски. Может, чего недопонял. Вообще я даже в этой теме писал, что всегда есть соблазн (в том числе и у меня) что-нить почикать или прилепить к текущему урлу, но нужно стараться себя сдерживать.

    Gency? Я к разработке этой CMS имею весьма опосредованное отношение, только доки пишу. Или ты про то, что я в блоге писал? У меня там отдельная ветка PHP/MySQL FAQ. Прямого отношения к CMS тоже не имеет.

    Какой костыль? Давай конкретнее.
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    @MouseZver, если не ошибаюсь, тогда речь шла о том, что фронт различал последние слаги в пути вроде slug и slug? (с вопросом на конце, но без строки параметров). Какое отношение это имеет к теме ТСа?
    --- Добавлено ---
    Кстати, этот функционал убрали из того фронта. Будем считать, что прислушались к твоему мнению :D
    --- Добавлено ---
    Но при /bla-bla-bla/slug? дергается 404-ая даже при корректном /bla-bla-bla/slug, так что по сути фронт все равно различает такие адреса, просто обработка первого теперь делается по-другому.
     
  3. Вероломство

    Вероломство Активный пользователь

    С нами с:
    19 июн 2017
    Сообщения:
    626
    Симпатии:
    24
    а Вы тут без меня :) что? Режете строку по амперсанду? Или по знаку вопроса? Только зачем, если всё уже есть:

    PHP:
    1. var_dump(parse_url(ltrim($_SERVER['REQUEST_URI'], '/'), PHP_URL_PATH), $_GET);
    или я что-то не уловил?
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    Уловил. Затем, что parse_url сложная и коварная :) Та же explode значительно проще и надежнее.
    --- Добавлено ---
    PHP:
    1. list($p) = explode('?', $_SERVER['REQUEST_URI'], 2);
     
    #29 miketomlin, 21 мар 2021
    Последнее редактирование: 21 мар 2021
    Вероломство нравится это.
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    Наверное, лучше это делать после выделения пути, а то parse_url будет еще задумчивее и коварнее ;)
     
    Вероломство нравится это.
  6. Вероломство

    Вероломство Активный пользователь

    С нами с:
    19 июн 2017
    Сообщения:
    626
    Симпатии:
    24
    ну я такой варик тоже знаю, просто я с явными гетами не работаю, поэтому мне кажется, что это было так давно уже :)
    --- Добавлено ---
    ну вообще по логике очерёдность должна быть такая, да, в trim всё остальное поместить (кроме вардампа естественно)
     
  7. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    Это из фронта (со встроенным роутером). Я туда тоже не часто заглядываю :)
    --- Добавлено ---
    Статья была про то, как сделать фронт. Взял для показа код из одного нашего фронта.
     
  8. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    :eek: не ну если как бы тебе платят за воздух то чё бы нет.
    А так бедный твой клиент. А если ты сам себе клиент. То походу время у тебя безграничное.
     
  9. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    это ты пьяный походу (а человек писавший этот код писал его так чтобы продакшн не сломался если работают с ним такие вот криворучки всякие).
    Что будет если будет возвращатсья в is_file true, а $dir будет отличная от \dirname($dir)?
     
    #34 askanim, 21 мар 2021
    Последнее редактирование: 21 мар 2021
  10. Вероломство

    Вероломство Активный пользователь

    С нами с:
    19 июн 2017
    Сообщения:
    626
    Симпатии:
    24
    я не понял что ты промямлил тут :)

    какой человек, какой продакшн, какой сломался криворучки :)

    ты зачем сделал a = b = 1 и потом проверил если a === 1 то вернул b, кого ты наебать хочешь, нанимателя, который, как лох платит тебе за лишние строки кода, включая PHPDoc? :) и каждый раз по три, как минимум, раза dirname-dirname-dirname, dirname-dirname-dirname, dirname-dirname-dirname, dirname-dirname-dirname....:):):)
     
  11. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Там алгоритм понятный. Они от расположения кернел-класса ищут вверх по дереву директорий, пока не обнаружат composer.json. По мне тоже проще в стартовом файле константу определить один раз, и радоваться, но, видимо, пытались не привязываться к конкретной структуре каталогов.
     
    Вероломство нравится это.
  12. Вероломство

    Вероломство Активный пользователь

    С нами с:
    19 июн 2017
    Сообщения:
    626
    Симпатии:
    24
    да не только константой делается, можно chdir(dirname(__DIR__)) сделать и просто скрипт будет сидеть в якобы в руте или там в определённых случаях getcwd и будет нам рут, масса вариантов, кто сказал, что именно ФВ его реализует правильно? он это делает ДЛЯ СЕБЯ, а если мне так не надо и я отступил от навязанных правил ФВ, то я оказывается - криворукий, тогда почему их так много этих ФВ, если правильный - один?

    просто подстраховали пользователей своего ФВ, а это ли не костыль? :)
    --- Добавлено ---
    p.s. и там ещё у dirname есть второй параметр, чтобы кучей dirname не ходить вверх по директориям
     
    #37 Вероломство, 21 мар 2021
    Последнее редактирование: 21 мар 2021
  13. Вероломство

    Вероломство Активный пользователь

    С нами с:
    19 июн 2017
    Сообщения:
    626
    Симпатии:
    24
    и там ещё у dirname есть второй параметр, чтобы кучей dirname не
    поразмыслил: не получится привязать контроллер и экшен, почему? Потому что я могу правилом роутера сделать подмену и фейковый REQUEST_URI не совпадёт с контроллер::экшен, который будет вызван, следовательно в html-разметку пагинации не попадёт REQUEST_URI, а попадёт контроллер::экшен, что приведёт к ошибке - раз и запалит :) контроллер::экшен, который подменяет REQUEST_URI - два :)
     
  14. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Потому что симфони может работать как отдельными компонентами так и целым приложением. В таком случае неизвестно где конкретно будет корень проекта. Да и у метода есть комментарий, достаточно понятный.
    Код (Text):
    1. Gets the application root dir (path of the project's composer file).
    Возвращаем корень проекта от composer.json, там где он там и vendor. А значит для текущего проекта там и есть корень, логика на мой взгляд вполне нормальная.

    Да и вообще symfony писали не идиоты как-бы.

    Если так написали значит так было нужно. Интересно почему разберись не интересно, не понимаешь @Вероломство - не оскорбляй труд других людей.
    Раз уж сам свой не ценишь.
     
    #39 askanim, 22 мар 2021
    Последнее редактирование: 22 мар 2021
  15. Вероломство

    Вероломство Активный пользователь

    С нами с:
    19 июн 2017
    Сообщения:
    626
    Симпатии:
    24
    я не понял что ты промямлил тут :)
     
  16. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Есть, но они не знают, сколько уровней ставить. Кернел класс можно где угодно в проекте засунуть

    Не костыль, цель - универсальность, и, как сказал @askanim, цель была - разработать фреймворк, который можно использовать модульно, а не только в каркасе. Чем-то за универсальность всегда платить приходится, но я не думаю, что этот поиск composer.json сильно отрицательно сказывается. Код на фрейморке всё равно всегда лучше самописа - потому что, если сопровождение перейдёт к другому программисту, знающему фрейморк, он намного быстрее разберётся, что там и где происходит.
     
    Вероломство нравится это.