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

Зацепление (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("Иван");


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 1
More from @easy_php_ru
  1. Oct 13, 2026🤔 Чем отличается Require от Includ'а? В PHP есть две схожие конструкции для подключения ф…
  2. Oct 13, 2026Post #2474
  3. Oct 12, 2026🤔 Что такое инкремент и декремент? Инкремент (`++`) и декремент (`--`) — это операции в P…
  4. Oct 12, 2026🤔 Как устроен типичный тест на opening point? Тест на Opening Point (OP-тест) используетс…
  5. Oct 11, 2026🤔 Для чего нужен middleware? Middleware — это промежуточный слой между запросом клиента и…
  6. Oct 11, 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 →