Внедрение зависимостей на основе конструктора PHP против нового. Какой из них более эффективен?
Существует два типа внедрения зависимостей http://www.javatpoint.com/dependency-injection-in-spring
- Внедрение зависимостей на основе конструктора
- Внедрение зависимостей на основе установки
Однако, что из следующего является более эффективным и почему? или они одинаковы? Другими словами, инъекция зависимости против 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 на обоих языках.