Ответ
Да, ООП — это основа большинства современных PHP-проектов, над которыми я работал, будь то фреймворки вроде Laravel/Symfony или кастомные приложения.
Практический пример из проекта:
<?php
// Абстракция через интерфейс
interface NotificationSenderInterface {
public function send(string $recipient, string $message): bool;
}
// Инкапсуляция и реализация
class EmailNotificationSender implements NotificationSenderInterface {
private string $smtpHost;
public function __construct(string $smtpHost) {
$this->smtpHost = $smtpHost; // Данные скрыты (инкапсуляция)
}
public function send(string $recipient, string $message): bool {
// Логика отправки email
return true;
}
}
// Наследование и полиморфизм
abstract class AbstractLogger {
abstract public function log(string $level, string $message): void;
public function info(string $message): void {
$this->log('INFO', $message); // Общий шаблон
}
}
class FileLogger extends AbstractLogger {
public function log(string $level, string $message): void {
file_put_contents('app.log', "[$level] $messagen", FILE_APPEND);
}
}
// Использование (полиморфизм)
$notifier = new EmailNotificationSender('smtp.example.com');
$logger = new FileLogger();
$logger->info('Notification service initialized.');
$notifier->send('user@example.com', 'Welcome!');
Из реального опыта:
- Активно применял трейты (
trait) для горизонтального повторного использования кода, например, для добавления поведенияSoftDeletesилиTimestampableв модели. - Использовал магические методы, такие как
__get()/__set()для динамических свойств или__invoke()для создания callable-объектов. - Следование принципам SOLID (особенно Dependency Injection и Interface Segregation) было ключевым для создания поддерживаемых и тестируемых сервисов в Symfony.