Задать вопрос
  • Как проверить отношение аргумента к методу?

    index0h
    @index0h
    Niomin
    Вы терминологию путаете((.
    /show/{id} - это роут
    {id} - это атрибут запроса
    Контроллер - это класс для экшнов
    Экшн - это метод (или класс с фиксированным методом run например), который мапится роутером на роут.

    /show/123?isDetailed=1 - здесь:
    $request->attribute->get('id') === '123';
    $request->query->get('isDetailed') === '1';
  • Как проверить отношение аргумента к методу?

    index0h
    @index0h
    таки да, ошибся я.
    Хотя есть вариант экшнов: а на вход передавать Request))
  • Что такое микросервис?

    index0h
    @index0h
    @vlad6085
    > Как на практике реализуются приложения, основанные на микросервисах?
    Проектируется и реализуется)) Почитайте Сэма Ньюмана "Создание микросервисов"

    > Для каждого из них поднимается свой mysql? Или для каждого из них существует своя БД/таблица?
    В зависимости от требований к проекту. Безопасней - отадельные БД, так как это обеспечит защиту от бесконтрольной связности проекта.

    @mikserok
    > А вы сами понимаете эти определения? В вашей терминологии найдена косвеная рекурсия.
    Да не вопрос. Видимо у вас есть определения по точнее))

    @vlad6085
    > Т.е. подразумевается что оно внутреннее, а не внешнее, я так понял.
    Если это встравиваемый сервис - внутреннее, если сетевой - внешнее.

    > А можно пример "самодостаточного функционала" для понимания?
    Сервис отправки почты. API может быть на базе обычной очереди в rabbitmq. Все, что делает эта система - это получает шаблон письма, вставляет туда данные и отправляет.
    или
    Сервис защиты от мата. Все что он делает - получив на вход сообщение, проверяет его туевой хучей регулярок, и возвращает ответ: "блокировать"/"не блокировать"/"нужна ручная проверка"

    @mikserok
    > А зачем вообще нужны эти сравнительно новые термины - микросервисы, система, самодостаточный функционал?
    Термины нужны для именования вещей и событий))

    > Какая от них практическая польза? Просто пишите как писали раньше.
    Ну, когда ваш проект не помещается на 10 физических серверов и более - писать как писал не особо то получится))
  • Как загрузить сразу все изображения в одно поле в БД?

    index0h
    @index0h
    > Как загрузить сразу все изображения в одно поле в БД?
    В таком случае вы сформулировали вопрос не очень))
  • Какой micro framework посоветуете?

    index0h
    @index0h
    Сергей Протько Можно))
    Илья
    В свое время поигрался с laravel - его люто НЕ рекомендую (см. мой ответ Попросили проверить код, на что смотреть нужно? regretful). Lumen - это тот же Laravel, только кастрированный.
    Slim - ну хз, если вам именно роутер нужен, а не фреймворк - можете брать.

    > А если глянуть на сайте Lumen то по производительности Silex вдалеке.
    )) был тут один, что с пеной у рта доказывал, какой восхитительный CodeIgniter, производительность - была основным аргументом. Увы, производительность и php - это разные вещи. Примите за исходную.

    > Как в вопросах работы с базой?
    Доктрина, лучше пока что нет.
  • Какой micro framework посоветуете?

    index0h
    @index0h
    Я бы конечно рекомендовал Symfony, вот только микрофреймворком его назвать сложно
  • Какой micro framework посоветуете?

    index0h
    @index0h
    Плюшки как у симфони, только проще. Насетапливаете через DI свои зависимости и работаете в абстракнтом вакууме, не зная про фреймворк.
  • Почему многие считают PHP языком с плохой архитектурой, да и вообще просто плохим языком?

    index0h
    @index0h
    rusrc
    > Чистый php и чистый c# - это лишь каркас из операторов.
    Верно, но выше вы сравнивали платформу с языком, что не корректно.

    Честно говоря я не совсем понимаю, что вы пытаетесь мне доказать)) Если asp.net vs php на примере простого CRUD - смысла в этом мало. Что там, что там трудозатраты будут приблизительно одинаковыми.

    Для части задач одна технология лучше, для части - другая. Прототипирование на php например в самый раз
  • Почему многие считают PHP языком с плохой архитектурой, да и вообще просто плохим языком?

    index0h
    @index0h
    Ну вы сравнили целую платформу asp.net с блекджеком и блудницами с чистый php))
    Давайте тогда сравнивать на одном уровне: на чистом C# вы за сколько времени сделаете то же самое? Чот мне кажется, что далеко не за 20 и даже не за день.

    Если уже оценивать со стороны оптимальности решения задачи:
    1. БД проектируем в MySQL Workbench (время проектирование учитывать не стоит, так как структура таблиц должна подходить под конкретные цели бизнеса И может быть довольно сложная), базовую sql-миграцию получаем при заливке схемы.
    2. На том же yii генерируем проект - это одна команда, сама генерация - доли секунды, время по большей части зависит от скорости набора, пусть 10 сек.
    3. Генерируем модель под каждую таблицу - ну хз, секунд по 30:
    - заходим в генератор моделей
    - вводим первые символы названия таблицы
    - жмакаем generate
    4. Генерируем CRUD: тут тоже самое, что и с моделью, только нужно будет еще дополнительно выбрать модель, под которую делать CRUD, ок, пусть это 40 сек.
    Итого: (10 + 30*10 + 40*10) + 3*60(в носу по ковырять) - это приблизительно 15 мин.
  • Есть ли какой-то движок для информационной библиотеки?

    index0h
    @index0h
    @nepster09
    Собсно и в чем проблема? Битбакет вы можете установить локально, гитлаб тоже
  • PHP, нормально ли на каждый запрос открывать коннект к MySQL, делать SELECT и закрывать коннект? Если нет, то как избежать?

    index0h
    @index0h
    OypiStudent
    > Неудачная перефразировка. Вилка
    Увы, вполне удачная. Если будете суп кушать - быстрее таки ложка.
    Данные по тем же вебсокетам не сжимаются например + у вас должно поддерживаться постоянное соединение. В случае LP - вы просто делаете запросы по таймауту. Под нестабильную связь и большой трафик на выгрузку я бы выбрал LP, под мелкий трафик, но критичный по времени - WS.
    Тот же Socket.io поддерживает горячую замену протоколов.

    > Как определить?
    Ну хз, на гуще погадайте, либо посмотрите, что пишет о своем железе хостер.
  • PHP, нормально ли на каждый запрос открывать коннект к MySQL, делать SELECT и закрывать коннект? Если нет, то как избежать?

    index0h
    @index0h
    > Но мы все же о скорости говорим а не удобстве.
    Скорость и stateless язык php - это разные не связанные вещи.

    > Тот же самый Long Polling или SSE реализованный на ноде будет сильно быстрее работать?
    Смотря как напишете, тот же socket.io вполне норм держит нагрузку.

    Нода в отличии от php даст вам постоянное состояние, например в другие сервисы, типа redis нет нужды лезть так как у вас состояние прямо на ноде хранится, съэкономите на лишних сетевых запросах.

    > А вебсокеты сильно быстрее чем Long Polling или SSE?
    Перефразирую ваш вопрос: А ложка сильно быстрее чем вилка, или нож?

    > А если те же вебсокеты, но на PHP с помощью elephant?
    Смысла нет, это вне целевой области php. Можно конечно, но это костыль.

    > memcached? Он разве не требует VPS?
    На многих шаред хостингах есть.
  • PHP, нормально ли на каждый запрос открывать коннект к MySQL, делать SELECT и закрывать коннект? Если нет, то как избежать?

    index0h
    @index0h
    Ну как сказать, "что дает". Система переписки - это штука, в которой нужно хранить некое состояние, при этом быстро + к тому эта задача легко ложится на событийную модель обработки, нода для этого и предназначена.

    > redis как я понимаю нужно поднимать на VPS?
    Ну да

    > на простой хостинг нельзя же его закинуть как какой-нибудь фреймворк или CMSку и спокойно запускать
    Дык простой хостинг вам и не подходит, в чем проблема то? У вас чат система, она существенно отличается от обычных говносайтиков на цмс)). Можете конечно попробовать вместо redis мемкэш заюзать, но будут сложности.

    На счет vps: я этими ребятками пользуюсь уже несколько лет, притензий нет https://m.do.co/c/ca94b4fc3b57
  • Проверка данных. Насколько целесообразно делать так?

    index0h
    @index0h
    hbuser
    Да не вопрос)) Назовите хотя бы один фреймворк, содержащий в себе функционал, на подобии этой либы. Обращаю внимание на 2 вещи:
    1. Не validate, а assert, в смысле бросание исключений
    2. Максимальная производительность. Этот функционал используется в каждом методе для проверки входящих аргументов простых типов (за исключением тестов разве что).

    Фреймворки как правило не налагают на столько жестких ограничений.
    В том же yii как правило проверки происходят в моделях, после их заполнения, часто без явных проверок.
    В симфони это делается либо в аннотациях (что очень очень долго и ресурсоемко), либо в энтити на сеттерах.
    В ларавеле в оф. доке вообще примеры с обработкой пользовательского ввода в моделях.

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

    Рекомендую я ее не потому, что "вот смотрите, какой я молодец", а потому, что это приведет реальному снижению количества возможных ошибок и повышению безопасности кода. Чем раньше придет это понимание - тем лучше.
  • Node.js как замена PHP?

    index0h
    @index0h
    > Возможно мы не поняли друг друга, я имею ввиду конфиги вроде i18n...
    Под переводы лучше использовать старый-добрый gettext, сам уже обжигался на этом. На счет конфигурации приложения: очень удобным является метод, на основании констант (как приятный бонус - хранение в RAM без ручного вмешательства).
    Вообще говоря система конфигурации как правило - это задача фреймвока.

    > И если спрашивающий захочет, допустим, написать демона или консольную утилиту, ему придется учить что-то новое, а знай он Node.js он смог бы сделать это без труда.
    Главное, что бы без эффекта утенка)). Дело в том, что при выборе только одной технологии можно очень легко стать ее заложником для ситуаций, где эта технология не совсем применима.

    > так что появись более удобный для меня инструмент, я без особой боли перейду на него.
    что скажете про golang?))
  • Проверка данных. Насколько целесообразно делать так?

    index0h
    @index0h
    В случае тайп хинтинга - необходимости проверять тип нету. Для php7 и выше рекомендую использовать тайп хинтинг всюду.
    Для проверки именно значения переменной - стоит использовать библиотеку. Учитывая, что данную либу рекомендую использовать в каждом методе с аргументами простых типов - требования к производительности очень высокие. Быстрее на данный момент только нейтивный код.
  • Проверка данных. Насколько целесообразно делать так?

    index0h
    @index0h
    hbuser
    Смысл есть. Фреймворк - это каркас для бизнес логики, ему как бы все равно, как вы ее реализуете.
    Либа же предназначена для легкого и быстрого выполнения проверки аргументов. Это не сравнимые вещи.
  • Node.js как замена PHP?

    index0h
    @index0h
    HoHsi
    > а в чем костыльность нативных await?
    нейтивные - это принятые стандартом языка, ES7 на данный момент еще не принят, так что ни о какой нейтивности не может быть и речи.
    На счет либ, что вы сбросили - да, есть еще async. А теперь скажите мне, эмулировать синхронность - это не костыль?))

    > это уход от проблемы, а не ее решение
    Ну как сказать, в случае разделения нод между серверами вам так или иначе придется использовать внешние хранилища, типа redis или memcache, даже на ноде (например под те же сессии). На счет opcache - он и так в ram хранится.

    > А почему мы сравниваем только вэб?
    потому, что автор спросил про замену php, а php - это web.

    > но язык учится не на один проект, и куда перспективнее знать Node.js, а не PHP.
    Посмотрите количество вакансий php и node, обычно перспективней учить то, что более востребовано))