Pull to refresh
187
0
Альберт Степанцев @AlexLeonov

Программист. CTO. Архитектор. Преподаватель.

Send message

Но... это же не платежи, верно?

Это же просто переводы? Без каких-либо гарантий и обязательств?

Если это платежи - где авторизация, холд и собственно списание? Где возможность опротестовать платеж, да и вообще, хоть как-то пообщаться с платежной системой?

У этого - нет бесплатной. Многие по прошествии времени выкладываются бесплатно.

Даже "улучшив" публикацию, вы всё равно несете в ней какой-то малосвязный бред.

Поставил вам минус за низкий технический уровень материала, и готов объяснить, почему.

  1. Стоило упомянуть, что для реализации DTO чаще всего используется паттерн Value Object и указать на разницу между этими двумя понятиями.

  2. Неплохо бы объъяснить разницу между Value Object и Entity.

  3. Стоило рассказать, что DTO по определению является иммутабельным объектом. А из этот следует применение модификатора readonly в свойствах и/или в классе.

  4. Не упомянут тайп-хинтинг свойств - почему?

  5. Если мы уж говорим о валидации, то стоит акцентировать внимание на том, что Value Object (и DTO, как подкласс) не могут находиться в невалидном состоянии, иначе это нарушает смысл паттерна.

  6. Валидация может быть как при создании объекта (в конструкторе), так и условно "внешняя"

  7. Второй вариант валидации - более гибкий. Он позволяет задать с помощью метаданных правила и сценарии валидации.

  8. Метаданные в современном PHP задаются через атрибуты. Нужно было бы показать пример, например из Symfony.

  9. Для преобразования в JSON в стандартной библиотеке PHP есть интерфейс. Почему его не использовали?

  10. Я бы посоветовал вам взять примеры сериализации таких объектов опять же из Symfony. И рассказать про метаданные, две стадии сериализации (преобразование в массив, а затем в нужный формат) и про десериализацию.

и это только навскидку...

Вместо глобальных переменных можно использовать статические методы какого-либо класса, как, кстати, делает Fiber.

Ты не душнишь, ты экзотику накидываешь, за что тебе большое спасибо! ))

Кирилл, я имел в виду, что в стандартной библиотеке нет готового "setInterval" или иных инструментов, чтобы отложить задачу.

А за пример спасибо, интересно.

Вы "ищете блох" в конкретном примере, утверждая, что ложку можно вырезать из полена и без рейсфедера.

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

Причем тут ваш пример?

Может есть какой-то пример, где действительно без них никак, и есть настоящая польза?

Конечно есть. Представьте себе файл со списком недействительных паспортов: https://проверки.гувм.мвд.рф/upload/expired-passports/list_of_expired_passports.csv.bz2

Всего-то 500+ мегабайт CSV в архиве. Сделайте его обработку без генераторов и со считыванием всего файла в память.

Я не одним днем готовил этот текст, прошу прощения.

Слово «интерпретатор» не очень корректное, в остальном, конечно же, вы правы.

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

Ваша правда. Включил в дайджест, потому что она обсуждалась в PHP Weekly.

Уберу.

Пока такое возможно только при использовании статических анализаторов, например Psalm.

Нет, уже не надо. Посмотрите на новый синтаксис, который объединяет объявление свойства и присваивание ему значения в конструкторе.

Интересно, сколько именно средств и на что не хватает? Если порядок суммы не очень большой - можно было бы выкупить в складчину и поддерживать еще какое-то время, попытавшись найти пути к окупаемости.

Да. Можно добавить «синглтонность».

Но в целом неважно для понимания темы статьи.

Я считаю это несущественной деталью в данном конкретном случае.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity