Задать вопрос
  • Как правильно создать объект класса Request в Workerman?

    @azuf Автор вопроса
    объекты не в вакууме существуют, их чтото создает и передает необходимые данные

    Я же и спрашивал про $buffer. Код в ООП стиле сложно понять. По крайней мере мне. Код библиотеки/фреймворка преимущественно состоит из каких то деклараций. Они просто объявлены, но ничего не делают. Между ними передается какое то состояние. Отследить его путь крайне сложно. Может у меня подход не правильный, не знаю. Какой в этом смысл? Это же усложнение. Никаких преимуществ. Видимо Дейкстра был прав, сказав, что ООП плохая идея, которую могли придумать только в Калифорнии.

    А нужно передавать buffer, т.е. сырые данные запроса http.

    Это понятно. Почитал немного документацию, там кое что объясняется про объект запроса.

    В Workerman гдето есть код по созданию объекта класса Request, и есть вызов onMessage с передачей туда Request.

    Это тоже понял, почитав код.

    Обработка http-запросов демоном на php скорее всего будет менее производительно чем через php-fpm

    Откройте Techempower benchmark. Вчера тестировал workerman с помощью wrk, на одном ядре 50 000 запросов в секунду, на нескольких ядрах сотни тысяч. FPM с Nginx и стандартными настройками показывает 4 500 запросов в секунду.

    Зря, не разберетесь с ООП, дальше не сможете продвигаться.

    Буду разбираться. Посоветуйте что нибудь практичное для обучения. Чтобы по больше практики. От толстых книг клонит в сон.

    Так у вас уже создан экземпляр класса, Workerman его создал. Весь смысл ООП, что вам не нужно вникать, что и как там делал Workerman - вам не нужно самому парсить запрос http, у вас есть есть готовый объект Request, с набором функций-методов, для удобного получения различных параметров запроса.

    Понемногу складывается понимание. Спасибо за помощь!
    Написано
  • Как правильно создать объект класса Request в Workerman?

    @azuf Автор вопроса
    зачем взяли этот проект?

    Потому что он позволяет использовать PHP как полноценный язык, способный держать постоянный процесс. Что дает много новых возможностей, в отличие от общепринятой CGI модели использования PHP, когда процесс запускается отдельным веб-сервером, а после процесс умирает. И дает еще и увеличение производительности. И потому что он проще чем Swoole.

    Для изучения ООП можно что-нибудь по проще, тем более что Workerman хреново написан и по нему не стоит изучать ООП.

    У меня нет цели изучать именно ООП. Моя цель разобраться с Workerman. Мне непонятно как изучать ООП. Я вижу класс Request, везде учат, что нужно создавать экземпляр объекта от класса, а тут выясняется, что просто так объект Request не создашь. То есть чтобы понять как работать конкретно с таким классом, нужно сразу углубляться в какие то тонкости, как это сделать непонятно, так как во всех книжках одна и та же общая информация.

    роутер от какого-нибудь фреймворка или пакета?

    Нет, буду писать свой, усложняя по мере необходимости.
    Написано
  • Как правильно создать объект класса Request в Workerman?

    @azuf Автор вопроса
    Vitsliputsli, то есть нельзя создать экземпляр Request? Здесь Request используется вне onMessage, правда класс наследуется от исходного. Не знаю важно ли это, плохо разбираюсь в работе конструкций классов и объектов. Можно как то понять как и когда возникает объект request? Про буфер я так и не понял, что он из себя представляет, откуда, когда и как берется. Мне сложно мыслить объектами, потому что они имеют какое то состояние, нужно понимать когда и где оно возникает, и как, когда, и где изменяется. Мне проще мыслить функциями как черными ящиками. Принимает и возвращает значение. Так же можно построить всю программу, максимально исключив изменение состояний.
    Написано
  • Как правильно создать объект класса Request в Workerman?

    @azuf Автор вопроса
    что пробрасывается buffer можно найти по ProtocolInterface::decode, например

    К сожалению, не понял что пробрасывается и причем здесь приведенный код.

    не понимаю зачем, куда, когда..

    Обрабатывать маршруты в роутере. В реквесте есть и другая нужная информация. Зачем засорять onMessage не относящейся к нему логикой?

    или сохранить в переменную

    Я и хотел сохранить в переменную, только не в методе onMessage, а используя экземпляр объекта.
    Написано
  • Как правильно создать объект класса Request в Workerman?

    @azuf Автор вопроса
    Виктор, что значит сам создаст? Мне нужно получить uri не в методе onMessage. Я почитал, что это появилось в PHP8, а как все таки создать экземпляр, если не понимаешь что передать в конструктор?
    Написано
  • Можно ли реализовать такое меню без флексов?

    @azuf Автор вопроса
    Alfieros, такое же по результату решения я и сам смог написать, на флоатах. И кода потребовалось меньше. Только если прижать правый пункт меню к краю, расстояния между пунктами уже не будут равными. Вопрос в том и состоит, можно ли сделать на блоках, но без флексов и гридов. Похоже что никак.
  • Можно ли реализовать такое меню без флексов?

    @azuf Автор вопроса
    xdevelx, напишите это в отдельном ответе на вопрос и я выберу его как решение. Если хотите конечно. Мне именно это хотелось узнать, можно ли вообще и насколько сложно.
  • Можно ли реализовать такое меню без флексов?

    @azuf Автор вопроса
    Потому что могу и потому что хочу. Вы когда чему то учитесь, всегда делаете только как правильно?
  • Можно ли реализовать такое меню без флексов?

    @azuf Автор вопроса
    Спасибо, но хочется понять как без флексов и гридов.
  • Можно ли реализовать такое меню без флексов?

    @azuf Автор вопроса
    Вы уверены, что .nav-justified работает так как требуется в задании? Мне не удалось быстро найти в исходниках 3-го бутстрапа как это реализовано. В 4-ом сделано на флексах.
  • Можно ли реализовать такое меню без флексов?

    @azuf Автор вопроса
    По запарке забыл прописать класс menu к тегу nav. Получилось вот что. Не понял зачем вы жестко прописали ширину. Как это должно помочь?
  • Можно ли реализовать такое меню без флексов?

    @azuf Автор вопроса
    У вас не как на фото. Правый пункт меню не такой. Там название должно прижиматься к правому краю. Код, который вы первый раз написали не работает. Вот мой код. После комментария вставил ваш код.