TGViewer
PHP | Вопросы собесов PHP | Вопросы собесов @easy_php_ru · 2.31K subscribers
Post #2302 396
🤔 Расскажи про букву D в SOLID и ее связь с интерфейсами?

Принцип Dependency Inversion (DIP) гласит:

Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций (интерфейсов).

Код не должен зависеть от конкретных классов, а должен работать через интерфейсы или абстракции.
Это делает код гибче и меньше зависящим от деталей реализации.

🚩Как DIP связан с интерфейсами?

Плохой код (без инверсии зависимостей)
class MySQLDatabase {
public function connect() {
return "Подключение к MySQL";
}
}

class UserRepository {
private MySQLDatabase $db; // Жёсткая зависимость!

public function __construct() {
$this->db = new MySQLDatabase();
}
}


Хороший код (через интерфейс, следуя DIP)
interface DatabaseInterface {
public function connect();
}

class MySQLDatabase implements DatabaseInterface {
public function connect() {
return "Подключение к MySQL";
}
}

class PostgreSQLDatabase implements DatabaseInterface {
public function connect() {
return "Подключение к PostgreSQL";
}
}

class UserRepository {
private DatabaseInterface $db;

public function __construct(DatabaseInterface $db) {
$this->db = $db;
}
}

// Теперь можно подставить любую базу данных!
$mysqlRepo = new UserRepository(new MySQLDatabase());
$pgRepo = new UserRepository(new PostgreSQLDatabase());


Ставь 👍 и забирай 📚 Базу знаний
More from @easy_php_ru
  1. Oct 11, 2026🤔 Что такое декремент? декремент — это операция, используемые для увеличения или уменьшен…
  2. Oct 10, 2026🤔 Что такое агрегатные функции? Агрегатные функции в SQL и других языках обработки данных…
  3. Oct 9, 2026🤔 Как настроить autoload через Composer? Composer предоставляет механизм автоматической з…
  4. Oct 9, 2026🤔 Какое отличие у протоколов tcp и udp? Это два основных транспортных протокола в интерне…
  5. Oct 8, 2026🤔 Есть ли какое-то различие между одинарными и двойными кавычками? - В большинстве языков…
  6. Oct 7, 2026🤔 В каких случаях используют индексы? Индексы в базах данных используются для ускорения о…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →