Junior — Middle
Kas notiks, ja apakšklasē izsauc metodi, kas tajā nav definēts, izmantojot self::?
sobes.tech AI
Atbilde no AI
PHP valodā atslēgas vārds self:: vienmēr attiecas uz klasi, kurā tas ir rakstīts, nevis uz mantoto klasi. Ja mantotajā klasē ar self:: izsauc metodi, kas nav definēta pašā mantotajā klasē, bet vecākklasē, PHP mēģinās to atrast tieši mantotajā klasē un neatradīs, kas novedīs pie kļūdas.
Piemērs:
class ParentClass {
public static function foo() {
echo "Parent foo";
}
}
class ChildClass extends ParentClass {
public static function bar() {
self::foo(); // Mēģinājums izsaukt foo() ar self:: ChildClass
}
}
ChildClass::bar(); // Kļūda: Call to undefined method ChildClass::foo()
Lai izsauktu vecāklases metodi, jāizmanto parent::foo() vai static::foo(), ja nepieciešama vēlā statiskā saite.