TGViewer
PHP | Вопросы собесов PHP | Вопросы собесов @easy_php_ru · 2.3K subscribers
Post #1948 656
🤔 Как работает зацепление?

Зацепление (coupling) — это степень зависимости одного модуля от другого. В PHP (и вообще в разработке) мы стремимся уменьшить зацепление, чтобы код был гибким, удобным для тестирования и сопровождения.

🚩Виды зацепления

🟠Слабое зацепление (Loose Coupling) – Хорошо
- Модули мало зависят друг от друга.
- Можно заменять части системы без изменений в других частях.
- Используется интерфейсы, DI (Dependency Injection), события.
interface Logger {
public function log($message);
}

class FileLogger implements Logger {
public function log($message) {
echo "Запись в файл: $message\n";
}
}

class DatabaseLogger implements Logger {
public function log($message) {
echo "Запись в базу: $message\n";
}
}

class User {
private $logger;

public function __construct(Logger $logger) {
$this->logger = $logger;
}

public function register($name) {
echo "Регистрация пользователя: $name\n";
$this->logger->log("Пользователь $name зарегистрирован.");
}
}

// Можно легко менять логгер без изменения класса User
$user = new User(new FileLogger());
$user->register("Иван");

$user = new User(new DatabaseLogger());
$user->register("Петр");


🟠Жёсткое зацепление (Tight Coupling) – Плохо
- Модули сильно связаны, нельзя поменять один без изменения другого.
- Код трудно тестировать и расширять.
- Используется жёсткая привязка классов внутри других классов.
class FileLogger {
public function log($message) {
echo "Запись в файл: $message\n";
}
}

class User {
private $logger;

public function __construct() {
$this->logger = new FileLogger(); // Жесткая зависимость!
}

public function register($name) {
echo "Регистрация пользователя: $name\n";
$this->logger->log("Пользователь $name зарегистрирован.");
}
}

// User всегда использует FileLogger, его нельзя легко заменить
$user = new User();
$user->register("Иван");


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 2
More from @easy_php_ru
  1. Oct 15, 2026🤔 Что такое замыкание? Это функция, которая «захватывает» переменные из внешней области в…
  2. Oct 15, 2026🤔 Что есть кроме микросервисной и монолитной архитектуры? Помимо монолитной и микросервис…
  3. Oct 14, 2026🤔 В чём суть абстрактного класса? Абстрактный класс — это класс, который нельзя инстанцир…
  4. Oct 14, 2026🤔 В чем принцип работы HashTable? Хеш-таблица – это структура данных, которая хранит пары…
  5. Oct 13, 2026Post #2477
  6. Oct 13, 2026🤔 Что такое namespaces Namespaces в PHP — это способ организации кода для предотвращения…
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 →