Слово зависимость означает зависимость от чего-то. Например, допустим, наша экономика зависит от экспорта нефти.

Предположим, существует два класса: класс X и класс Y. Если класс X использует некоторую функциональность класса Y, то мы можем сказать, что класс X зависит от класса Y.

Обычно, когда мы используем один класс в другом, это делается путем создания объекта первого класса с ключевым словом «новый» во втором классе. Как следующий код

class Student {
  private $studentName;
  public __construct($studentName){
    $this->studentName = $studentName;
  }
}

class School {
  private $student;
  private $schoolName;
  public __construct($schoolName, $studentName){
    $this->schoolName = $schoolName;
    $this->student =  new Student($studentName) 
    
  }
}

В вышеупомянутом коде, как сказано в комментарии. Если мы таким образом создадим объект другого класса. Это делает оба класса тесно связанными, что противоречит принципам SOLID. Также это затруднит масштабирование приложения в случае крупномасштабных приложений. Поскольку, поскольку оба класса зависимы, при обновлении одного класса нам может потребоваться обновить все классы, зависящие от этого.

Внедрение зависимостей решает эту проблему. В этом методе зависимость внедряется через конструктор зависимого класса или, в нашем случае, класса School. Посмотрим, как это делается

class Student {
  private $studentName;
  public __construct($studentName){
    $this->studentName = $studentName;
  }
}

class School {
  private $student;
  private $schoolName;
  public __construct($schoolName, Student $student){  
  
    $this->schoolName = $schoolName;
    $this->student =  $student;  
   
  }
}

Если вы спросите, имеет ли это большое значение? Я бы сказал да и нет, потому что внедрение зависимостей полезно в долгосрочных крупномасштабных проектах. Но как программист мы должны знать стандарты. Стандарты кодирования делают наш код многоразовым, поддерживаемым и надежным. Как всегда говорил дядя Боб, если этим занимаются врачи и инженеры, то почему не мы?

Удачного кодирования!

Нравится эта статья? Щелкните здесь, чтобы купить мне кофе :)