Junior — Middle
Mi történik, ha egy alosztályban egy olyan metódust hívunk meg, amely nincs benne, a self:: használatával?
sobes.tech MI
Válasz az MI-től
PHP-ben a self:: kulcsszó mindig arra a osztályra utal, amelyben írva van, nem az örökölt osztályra. Ha egy alosztályban self::-t használva hívunk meg egy módszert, amely nem az alosztályban, hanem a szülőosztályban van definiálva, akkor a PHP megpróbálja pontosan az alosztályban megtalálni, és nem fogja megtalálni, ami hibához vezet.
Példa:
class ParentClass {
public static function foo() {
echo "Parent foo";
}
}
class ChildClass extends ParentClass {
public static function bar() {
self::foo(); // Megpróbálja meghívni a foo() metódust self::-tel az ChildClass-ben
}
}
ChildClass::bar(); // Hiba: Call to undefined method ChildClass::foo()
A szülőosztály módszerének hívásához használja a parent::foo()-t vagy a static::foo(), ha késői statikus kötés szükséges.