Понимание IoC, DI и ссылочных методов

Я нахожусь в процессе изучения depenency injection и inversion of control, и мне кажется, я начинаю понимать, как это работает:

  • Объекты не должны заниматься созданием своих собственных зависимостей
  • Зависимости должны быть переданы объекту (через конструктор или методы setter)
  • DI контейнер может выполнять работу по созданию объектов со всеми необходимыми зависимостями

Если все это верно, могу ли я больше не использовать то, что я называю "ссылочные методы" в своих объектах?

Вот что я имею в виду под ссылочными методами. Скажем, у меня есть две модели для семей и членов семьи. Я считаю очень полезным создавать методы, которые ссылаются на объекты, относящиеся к этой модели. В приведенном ниже примере, вызывая $family->members(), я могу быстро получить доступ ко всем членам семьи. Но это означает, что мой объект family инстанцирует классы family_member... а разве это не нарушает правила IoC?

Что если класс family_member имеет зависимость, которая выходит за рамки класса family? Мы будем очень признательны за ответы!

<?php

    class family
    {
        public $id;

        public function members()
        {
            // Return an array of family_member objects
        }
    }

    class family_member
    {
        public $family_id;
        public $first_name;
        public $last_name;
        public $age;
    }
8
задан Jonathan 24 October 2011 в 20:11
поделиться