static и final
static
Ключевое слово static определяет статические свойства и статические методы.
Получить доступ к статическому свойству/методу класса можно без создания объекта этого класса.
Получить доступ к статическому свойству или методу можно при помощи оператора разрешения области видимости :: между именем класса и именем свойства/метода.
<?php
class myClass {
static $myStaticProperty = 42;
}
echo myClass::$myStaticProperty;
?>
Ключевое слово self необходимо для получения доступа к статическому свойству из статического метода в определении класса.
<?php
class myClass {
static $myProperty = 42;
static function myMethod() {
echo self::$myProperty;
}
}
myClass::myMethod();
?>
Объекты класса не могут получить доступ к статическим свойствам в классе, но могут получить доступ к методам.
В PHP ключевое слово final определяет методы, которые нельзя переопределить в дочерних классах. Классы, которые определены как окончательные (final), не могут быть наследованы.
В примере ниже показано, что final метод не может быть переопределен в дочернем классе:
<?php
class myClass {
final function myFunction() {
echo "Parent";
}
}
// ERROR because a final method cannot be overridden in child classes.
class myClass2 extends myClass {
function myFunction() {
echo "Child";
}
}
?>
Следующий код демонстрирует, что final класс не может быть наследован:
<?php
final class myFinalClass {
}
// ERROR because a final class cannot be inherited.
class myClass extends myFinalClass {
}
?>