Sobes.tech
Junior — Middle

Alt sinifdə, onun daxilində təyin olunmayan bir metodu self:: istifadə edərək çağırsaq, nə baş verir?

sobes.tech Süni İntellekt

AI-dan cavab

PHP-də self:: açar sözü həmişə yazıldığı sinfə istinad edir, törəmə sinfə yox. Əgər alt sinifdə self:: vasitəsilə metod çağırılırsa və bu metod alt sinifdə deyil, valideyn sinifdə təyin olunubsa, PHP onu dəqiq olaraq alt sinifdə tapmağa çalışacaq və tapmayacaq, bu da xəta ilə nəticələnəcək.

Misal:

class ParentClass {
    public static function foo() {
        echo "Parent foo";
    }
}

class ChildClass extends ParentClass {
    public static function bar() {
        self::foo(); // ChildClass-də self:: vasitəsilə foo() çağırmağa cəhd
    }
}

ChildClass::bar(); // Xəta: Call to undefined method ChildClass::foo()

Valideyn sinfin metodunu çağırmaq üçün parent::foo() və ya gec statik bağlama tələb olunursa static::foo() istifadə edilməlidir.