Внедрение зависимостей на основе конструктора PHP против нового. Какой из них более эффективен?

Существует два типа внедрения зависимостей http://www.javatpoint.com/dependency-injection-in-spring

  1. Внедрение зависимостей на основе конструктора
  2. Внедрение зависимостей на основе установки

Однако, что из следующего является более эффективным и почему? или они одинаковы? Другими словами, инъекция зависимости против newИнг объект?

class User
{
   private $departmentRepo;

   public function __construct()
   {
       $this->departmentRepo = new DepartmentRepository();
   }
}

// OR

class User
{
   private $departmentRepo;

   public function __construct(DepartmentRepository $departmentRepo)
   {
     $this->departmentRepo = $departmentRepo;
   }
}

РЕДАКТИРОВАТЬ

@Chetan Ameta, Federico, Sougata Внедрение зависимостей через конструкторы или установщики свойств? больше о том, какой из методов зависимости использовать. Последний вопрос касается обоснования того, какой метод DI использовать (Конструктор или Сеттер / Получатель).

Однако мой вопрос касается DI против нового объекта. Почему мы используем DI? почему не просто new класс и использовать объект? Примечание: в моем вопросе пример кода на PHP. Имея опыт работы с PHP и JavaSpring, я не вижу большой разницы в использовании DI или OOP на обоих языках.

0 ответов

Другие вопросы по тегам