OOP: final — запрет наследования
Glossary overview

OOP: final — запрет наследования

final в ООП PHP – это модификатор, который запрещает переопределение или наследование.

Он может применяться к:

  • классу
  • методу

final на классе

final class TemplateUtils { ... }

class MyTemplateUtils extends TemplateUtils { }  // ❌ Fatal error

final на методах

// Plugin.php
abstract class Plugin
{
    final public static function getInstance(): static { ... }

    final private function __construct() { }
}

final method = наследник не может переопределить:

class CpmExtraFeatures extends Plugin
{
    // Нельзя:
    public static function getInstance(): static { ... }  // ❌ Fatal error
    
    // Нельзя:
    private function __construct() { ... }                 // ❌ Fatal error
}

Правило

Класс с только static методами, без состояния  →  final class
Метод, который обеспечивает архитектурную       →  final method
  гарантию (Singleton, безопасность)