Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
PHP solid принцип инверсии зависимостей Dependency inversion principle, DIP
// husband.php
<?php
/**
* Solid
* D - принцип инверсии зависимостей
* Dependency inversion principle, DIP
* Зависимости внутри системы строятся на основе абстракций,
* модули верхних уровней не должны зависеть от модулей
* нижних уровней. Оба типа модулей должны зависеть от абстракций.
* Абстракции не должны зависеть от деталей. Детали должны
* зависеть от абстракций
*
* Зависимости должны строится относительно абстракций, а не деталей
* Детали === класс
*/
class lowRankingMale {
public function eat() {
$wife = new Wife();
$food = $wife->getFood();
// ...eat
}
}
class averageRankingMale {
private $wife;
public function __construct(Wife $wife) {
$this->wife = $wife;
}
public function eat() {
$food = $this->wife->getFood();
// ...eat
}
}
class highRankingMale {
private $foodProvider;
public function __construct(IFoodProvider $foodProvider) {
$this->foodProvider = $foodProvider;
}
public function eat() {
$food = $this->foodProvider->getFood();
// ...
}
}
// wife.php
<?php
class Wife implements IFoodProvider {
public function getFood() {
// ...
return $food;
}
}
// restaurant.php
<?php
class Restaurant implements IFoodProvider {
public function getFood() {
//...
return $food;
}
}
// IFoodProvider.php
<?php
interface IFoodProvider {
public function getFood();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.