Junior — Middle
Kas nutiks, jei pogrupyje kreipiatės į metodą, kuris jame nėra apibrėžtas, naudodami self::?
sobes.tech AI
Atsakymas iš AI
PHP kalboje self:: raktinis žodis visada nurodo klasę, kurioje jis rašytas, o ne vaikų klasę. Jei vaikų klasėje iškviesite metodą naudodami self::, kuris nėra apibrėžtas pačioje vaikų klasėje, o yra tėvų klasėje, PHP bandys jį rasti būtent vaikų klasėje ir neradęs sukels klaidą.
Pavyzdys:
class ParentClass {
public static function foo() {
echo "Parent foo";
}
}
class ChildClass extends ParentClass {
public static function bar() {
self::foo(); // Bandymas iškviesti foo() per self:: vaikų klasėje
}
}
ChildClass::bar(); // Klaida: Call to undefined method ChildClass::foo()
Norint iškviesti tėvų klasės metodą, reikia naudoti parent::foo() arba static::foo(), jei reikalingas vėlyvas statinis ryšys.