В PHP
self и static используются внутри классов для обращения к их свойствам и методам, но работают по-разному. Давайте разберёмся в их назначении и отличиях. 🚩self
Используется для обращения к собственным методам и свойствам класса. Оно не учитывает наследование и всегда ссылается на тот класс, в котором написано.
class A {
public static function who() {
echo "Я класс A\n";
}
public static function call() {
self::who(); // Вызываем метод who() внутри того же класса
}
}
class B extends A {
public static function who() {
echo "Я класс B\n";
}
}
B::call(); // Выведет: "Я класс A", а не "Я класс B"🚩static
Работает динамически, учитывает класс, из которого вызван метод. Это полезно в наследовании.
class A {
public static function who() {
echo "Я класс A\n";
}
public static function call() {
static::who(); // Используем static вместо self
}
}
class B extends A {
public static function who() {
echo "Я класс B\n";
}
}
B::call(); // Выведет: "Я класс B"Ставь 👍 и забирай 📚 Базу знаний