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(), αν απαιτείται καθυστερημένη στατική σύνδεση.