Law of Demeter is very confusing because looks like I couldn't ever write methods that return objects Law of Demeter is very confusing because looks like I couldn't ever write methods that return objects php php

Law of Demeter is very confusing because looks like I couldn't ever write methods that return objects


You've misunderstood the Law of Demeter and are applying it beyond the point of usefulness:

More formally, the Law of Demeter for functions requires that a method M of an object O may only invoke the methods of the following kinds of objects:

  • O itself
  • M's parameters
  • any objects created/instantiated within M
  • O's direct component objects
  • a global variable, accessible by O, in the scope of M

Factories in particular are used to create an object, and the type of object they create is part of their public interface. Thus, calling methods of an object created by a factory is allowed by the above.