Junior — Middle
თუ ქვესაფარში დაუკავშირდებით მეთოდს, რომელიც მასში განსაზღვრული არ არის, self:: გამოყენებით, რა მოხდება?
sobes.tech AI
პასუხი AI-სგან
PHP-ში self:: საკვანძო სიტყვა ყოველთვის ეხება იმ კლასს, სადაც იგი დაწერილია, არა მემკვიდრე კლასს. თუ მემკვიდრე კლასში გამოიძახებთ მეთოდს self::-ის საშუალებით, რომელიც არ არის განსაზღვრული მემკვიდრე კლასში, არამედ მშობელ კლასში, PHP ცდილობს იპოვოს იგი ზუსტად მემკვიდრე კლასში და ვერ იპოვის, რაც გამოიწვევს შეცდომას.
მაგალითი:
class ParentClass {
public static function foo() {
echo "Parent foo";
}
}
class ChildClass extends ParentClass {
public static function bar() {
self::foo(); // მცდელობა გამოიძახოს foo() self::-ის საშუალებით ChildClass-ში
}
}
ChildClass::bar(); // შეცდომა: Call to undefined method ChildClass::foo()
მშობელ კლასის მეთოდის გამოძახებისთვის საჭიროა გამოიყენოთ parent::foo() ან static::foo(), თუ საჭიროა გვიან სტატიკური ბმული.