КРИСТОФЕР УИЛСОН ЧИСТАЯ АРХИТЕКТУРА В PHP

Кристофер Уилсон предложил в своей книге «Чистая архитектура» пять принципов, которым должно следовать практически любое программное обеспечение. В PHP-разработке эти принципы имеют широкое применение.

Первый принцип — независимость от фреймворка. Он звучит как «грешить не на должное», но при этом важно понимать необходимость читаемости и масштабируемости кода. Для достижения независимости разрабатываемое ПО должно содержать только бизнес-логику.

function calculateSalary(Employee $employee, Payroll $payroll) {
if ($employee->isEligibleForBonus()) {
$bonus = $payroll->calculateBonus($employee);
$salary = $employee->getBaseSalary() + $bonus;
} else {
$salary = $employee->getBaseSalary();
}
return $payroll->deposit($employee, $salary);
}

Второй принцип, известный как единственная ответственность (Single Responsibility Principle, SRP), утверждает, что каждый модуль или класс должен иметь только одну причину для изменения. Это повышает его переиспользуемость и облегчает поддержку.

Третий принцип — открытость для расширения, но закрытость для модификации (Open Closed Principle, OCP). Он гласит, что программное обеспечение должно быть открыто для расширения новыми функциями, но при этом закрыто для изменений кода, реализующего существующие функции.

interface SalaryCalculator {
public function calculateSalary(Employee $employee): float;
}

class SeniorDeveloperSalary implements SalaryCalculator {
public function calculateSalary(Employee $employee): float {
return $employee->getBaseSalary() * 2.5;
}
}

class JuniorDeveloperSalary implements SalaryCalculator {
public function calculateSalary(Employee $employee): float {
return $employee->getBaseSalary() * 1.5;
}
}

Четвертый принцип — разделение интерфейса и реализации (Interface Segregation Principle, ISP). Он утверждает, что интерфейсы не должны быть раздуты, а должны быть специфичны для конкретных функций.

Пятый принцип — инверсия зависимостей (Dependency Inversion Principle, DIP). Он предлагает инвертировать зависимости в программном обеспечении, чтобы облегчить его расширение и обеспечить независимость каждого модуля.

№110: Когда начинать изучать архитектуру ПО

Введение в Чистую Архитектуру. Артур Бадретдинов

Мастер-класс: элементы DDD в PHP // Демо-занятие курса «PHP Developer. Professional»

#Backend Денис Цветцих. Чистая архитектура на практике

Обзор популярной архитектуры под WEB

Чистая архитектура и Domain-Driven Design

LARAVEL + Clean Architecture // Роман Постников

Модульный PHP монолит как альтернатива микросервисной архитектуре - Юлия Николаева, iSpring

Реклама
Новое
Реклама