====== Принцип единственной обязанности (ответственности)(Single responsibility principle). ====== Этот принцип первый в списке принципов SOLID. Обозначает, что любой объект должен иметь лишь одну обязанность и эта обязанность должна быть полностью реализована в классе объекта (инкапсулирована). Из этого следует что должна быть одна причина чтобы вносить изменения в объект. Пример //index.php// $product = new Product(); $product->setPrice(10); //product.php// class Product { public function setPrice($price) { try { // save price in db } catch (DbException $e) { $this->logError($e->getMessage()); } } public function logError($error) { // save error message } } Класс Product нарушает принцип единственной ответственности, так как он имеет две ответственности: - Работа с продуктом - Логирование ошибок //logger.php// class Logger { public function log($message) { //... $this->saveToFile($message); } } Теперь изменим файл index.php: //index.php// $logger = new Logger(); $product = new Product($logger); $product->setPrice(10); Изменим класс Product: //product.php// class Product { private $logger; public function __construct(Logger $logger) { $this->logger = $logger; } public function setPrice($price) { try { // save price in db } catch (DbException $e) { $this->logger->log($e->getMessage()); } } }