Size: a a a

2020 December 07

АГ

Алексей Гевондян... in Laravel Pro
вот
источник

АГ

Алексей Гевондян... in Laravel Pro
для возраста это не так - поэтому функция, возвращающая возраст - не чистая.
источник

АГ

Алексей Гевондян... in Laravel Pro
она зависит от функции date(), которая нечистая.
источник

M7

MaZaHaKa 7 in Laravel Pro
👍
источник

M7

MaZaHaKa 7 in Laravel Pro
А есть предположение , почему у моделей нельзя конструктор нормально переопределять? Например добавить параметр второй, который обязателен для заполнения явно? Был случай, когда нужно было при создании экземпляра модели определённой программист должен был указать явно «режим создания» объекта, иначе (если он не задан) - бросать исключение

По итогу все посыпалось: фабрики, связи (relations)

И пришлось в атрибут сетить этот параметр и onCreating это отсматривать, а потом делать unset
источник

АГ

Алексей Гевондян... in Laravel Pro
нарушение лсп
источник

АГ

Алексей Гевондян... in Laravel Pro
но конструктор - особый случай, там вроде можно добавлять новые параметры, т.е. как бы менять контракт
источник

АГ

Алексей Гевондян... in Laravel Pro
да и удалять тоже можно. в общем то с конструкторами можешь делать что хочешь
источник

АГ

Алексей Гевондян... in Laravel Pro
надо только вызывать конструктор родителя из конструктора потомка
источник

M7

MaZaHaKa 7 in Laravel Pro
Алексей Гевондян
нарушение лсп
Понял, Просто в чем «прикол», что для отношений создаются экземпляры модели, там где эти связи используются, в которые никто не подкидывает нужные аргументы
источник

АГ

Алексей Гевондян... in Laravel Pro
но т.к. конструктор например у eloquent моделей - это некий контракт, то нарушая его в потомках ты ломаешь систему
источник

M7

MaZaHaKa 7 in Laravel Pro
Угу, так и выходит
источник

АГ

Алексей Гевондян... in Laravel Pro
new static($default_assuming_data) не прокатывает уже. т.к. там ты другое определил.
источник

АГ

Алексей Гевондян... in Laravel Pro
так что для конструктора, как и для любого метода - принцип подстановки Лисков надо соблюдать.
источник

АГ

Алексей Гевондян... in Laravel Pro
лучше добавь "умный конструктор"  (статический метод создания объекта)
источник

M7

MaZaHaKa 7 in Laravel Pro
Алексей Гевондян
так что для конструктора, как и для любого метода - принцип подстановки Лисков надо соблюдать.
Спасибо , это наиболее подходящий аргумент
источник

M7

MaZaHaKa 7 in Laravel Pro
Алексей Гевондян
лучше добавь "умный конструктор"  (статический метод создания объекта)
Кхм
источник

M7

MaZaHaKa 7 in Laravel Pro
Хотя тоже не пойдёт
источник

M7

MaZaHaKa 7 in Laravel Pro
Никто ведь не запретит сделать new Model()
источник

АГ

Алексей Гевондян... in Laravel Pro
ну можно у конкретно этой модели сделать конструктор protected... а может и нельзя.
источник