// final класс - нельзя наследовать
final class Singleton {
private static ?self $instance = null;
public static function getInstance(): self {
return self::$instance ??= new self();
}
}
// class Child extends Singleton {} // Fatal error!
// final метод - нельзя переопределять в наследниках
class Base {
final public function critical(): void { /* ... */ }
}
class Child extends Base {
// public function critical(): void {} // Fatal error!
}Используйте final когда наследование может сломать логику. В DDD часто Entity и Value Object делают final.