Это же просто переводы? Без каких-либо гарантий и обязательств?
Если это платежи - где авторизация, холд и собственно списание? Где возможность опротестовать платеж, да и вообще, хоть как-то пообщаться с платежной системой?
Поставил вам минус за низкий технический уровень материала, и готов объяснить, почему.
Стоило упомянуть, что для реализации DTO чаще всего используется паттерн Value Object и указать на разницу между этими двумя понятиями.
Неплохо бы объъяснить разницу между Value Object и Entity.
Стоило рассказать, что DTO по определению является иммутабельным объектом. А из этот следует применение модификатора readonly в свойствах и/или в классе.
Не упомянут тайп-хинтинг свойств - почему?
Если мы уж говорим о валидации, то стоит акцентировать внимание на том, что Value Object (и DTO, как подкласс) не могут находиться в невалидном состоянии, иначе это нарушает смысл паттерна.
Валидация может быть как при создании объекта (в конструкторе), так и условно "внешняя"
Второй вариант валидации - более гибкий. Он позволяет задать с помощью метаданных правила и сценарии валидации.
Метаданные в современном PHP задаются через атрибуты. Нужно было бы показать пример, например из Symfony.
Для преобразования в JSON в стандартной библиотеке PHP есть интерфейс. Почему его не использовали?
Я бы посоветовал вам взять примеры сериализации таких объектов опять же из Symfony. И рассказать про метаданные, две стадии сериализации (преобразование в массив, а затем в нужный формат) и про десериализацию.
Интересно, сколько именно средств и на что не хватает? Если порядок суммы не очень большой - можно было бы выкупить в складчину и поддерживать еще какое-то время, попытавшись найти пути к окупаемости.
А где статья?
Но... это же не платежи, верно?
Это же просто переводы? Без каких-либо гарантий и обязательств?
Если это платежи - где авторизация, холд и собственно списание? Где возможность опротестовать платеж, да и вообще, хоть как-то пообщаться с платежной системой?
У этого - нет бесплатной. Многие по прошествии времени выкладываются бесплатно.
Даже "улучшив" публикацию, вы всё равно несете в ней какой-то малосвязный бред.
Поставил вам минус за низкий технический уровень материала, и готов объяснить, почему.
Стоило упомянуть, что для реализации DTO чаще всего используется паттерн Value Object и указать на разницу между этими двумя понятиями.
Неплохо бы объъяснить разницу между Value Object и Entity.
Стоило рассказать, что DTO по определению является иммутабельным объектом. А из этот следует применение модификатора readonly в свойствах и/или в классе.
Не упомянут тайп-хинтинг свойств - почему?
Если мы уж говорим о валидации, то стоит акцентировать внимание на том, что Value Object (и DTO, как подкласс) не могут находиться в невалидном состоянии, иначе это нарушает смысл паттерна.
Валидация может быть как при создании объекта (в конструкторе), так и условно "внешняя"
Второй вариант валидации - более гибкий. Он позволяет задать с помощью метаданных правила и сценарии валидации.
Метаданные в современном PHP задаются через атрибуты. Нужно было бы показать пример, например из Symfony.
Для преобразования в JSON в стандартной библиотеке PHP есть интерфейс. Почему его не использовали?
Я бы посоветовал вам взять примеры сериализации таких объектов опять же из Symfony. И рассказать про метаданные, две стадии сериализации (преобразование в массив, а затем в нужный формат) и про десериализацию.
и это только навскидку...
Спасибо.
Вместо глобальных переменных можно использовать статические методы какого-либо класса, как, кстати, делает Fiber.
Ты не душнишь, ты экзотику накидываешь, за что тебе большое спасибо! ))
Кирилл, я имел в виду, что в стандартной библиотеке нет готового "setInterval" или иных инструментов, чтобы отложить задачу.
А за пример спасибо, интересно.
Вы "ищете блох" в конкретном примере, утверждая, что ложку можно вырезать из полена и без рейсфедера.
Я же вам рассказываю - что такое рейсфедер и как его применять, безотносительно ложки.
Причем тут ваш пример?
Конечно есть. Представьте себе файл со списком недействительных паспортов: https://проверки.гувм.мвд.рф/upload/expired-passports/list_of_expired_passports.csv.bz2
Всего-то 500+ мегабайт CSV в архиве. Сделайте его обработку без генераторов и со считыванием всего файла в память.
Я не одним днем готовил этот текст, прошу прощения.
Слово «интерпретатор» не очень корректное, в остальном, конечно же, вы правы.
Такой вариант создает достаточно большую нагрузку, проверяя типы списка аргументов в рантайме.
Ваша правда. Включил в дайджест, потому что она обсуждалась в PHP Weekly.
Уберу.
Пока такое возможно только при использовании статических анализаторов, например Psalm.
Нет, уже не надо. Посмотрите на новый синтаксис, который объединяет объявление свойства и присваивание ему значения в конструкторе.
Об этом и пишу выше.
Интересно, сколько именно средств и на что не хватает? Если порядок суммы не очень большой - можно было бы выкупить в складчину и поддерживать еще какое-то время, попытавшись найти пути к окупаемости.
Да. Можно добавить «синглтонность».
Но в целом неважно для понимания темы статьи.