Является ли нарушением закона Деметры возврат callable или пути к классу?
Доброго вечера.
Закон Деметры гласит, что нельзя пользоваться классами, которые были возвращены другими классами. Распространяется ли это на вызываемые (callable) значения, или пути к классу? Является ли класс, генерирующий callable, фабрикой? Ведь по сути, он ничего не собирает и не создает, а лишь отдает ссылки на объекты.
Закон Деметры гласит, что нельзя пользоваться классами, которые были возвращены другими классами. Распространяется ли это на вызываемые (callable) значения, или пути к классу?
Не распространяется на пути к классу. На callable не распространяется, если в теле callable нет ссылки на $this.
Вообще смысл закона в том, что бы ты не мог изменить состояния объекта без взаимодействия с ним.
Является ли класс, генерирующий callable, фабрикой?
>>Ведь по сути, он ничего не собирает и не создает, а лишь отдает ссылки на объекты.
Ссылка - это просто указатель на область памяти без объяснения, что там находиться. Возврат ссылки нарушает принцип инкапсуляции объекта.
>>Закон Деметры гласит, что нельзя пользоваться классами, которые были возвращены другими классами.
Запрещено выводить из области видимости mutable объекты, это нарушает принцип инкапсуляции. Если у тебя еще язык с GC у тебя и утечки памяти поедут плодиться.
Я имел в виду абсолютное имя класса, которое можно превратить в инстанс. Признаю, немного криво написал.
Под callable же многое можно подразумевать, но в частном случае - это имя класса и имя метода в нем для вызова. Или замыкание, которое что-то сделает с нужным классом.