• Как сверстать данный макет с Grid?

    Если высота и ширина элементов класса .container являются константными значениями, то можно сделать так:
    https://codepen.io/jimmdigrizli/pen/xxbEBym

    Чуть сложнее вариант, но чуть более правильный:
    https://codepen.io/jimmdigrizli/pen/WNbGmWO
    Ответ написан
    Комментировать
  • Какие существуют хорошие готовые решения для реализации data transfer object на php?

    Вообще не валидируем DTO. Он нужен только для перекидывания данных из одного слоя в другой. Что с этими данными будет на той стороне уже не касается того кто его создавал: на этапе создания dto уже поздно думать что где-то данные не того допуска, так как мы их либо из базы достали или сервиса или просто сгенерировали на лету. Принимающая сторона, если нужно, может провалидировать значения перед использованием и если что-то окажется за пределами допустимых значений как-то обработать данный кейс.

    В данном контексте можно вспомнить про команды и запросы для CQRS. Мы их создаем через сериализатор: на вход подается массив данных для заполнения полей в создаваемой команде/запросе и класс команды/запроса в котором через аннотации указаны параметры валидации.
    Ответ написан
    Комментировать
  • При переходе с 5.6 на 7 php начал выдавать Function name must be a string как изменить код?

    PHP до 7 версии интерпретировала подобные вырожения как: $this->{$value['type']}( $value ). Начиная с 7 версии и выше - ($this->$value)['type']( $value ).
    Используйте явный синтаксис(фигурные скобки), чтобы код выполнялся как в 5 версии. Пример
    Ответ написан
    Комментировать
  • Надо делать наследование или нет?

    Есть хороший способ определить рациональность использования наследования. Для этого нужно ответить на ряд вопросов:
    - оба класса из одной предметной области;
    - наследник отвечает принципу подстановки Барбары Лисков;
    - код наследуемого класса необходим либо хорошо подходит для наследника;
    - наследник в основном добавляет логику.
    Чем больше положительных ответов, тем больше вероятность, что вы не промахнетесь с выбором наследования.

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