Junior — Middle
Θα καλείται αυτόματα η μέθοδος __set() όταν αναθέτουμε μια τιμή σε μια ιδιότητα ενός αντικειμένου της κλάσης;
sobes.tech AI
Απάντηση από AI
Η μέθοδος __set() στο PHP καλείται αυτόματα μόνο στην περίπτωση που προσπαθείτε να αναθέσετε μια τιμή σε μια ιδιότητα που δεν υπάρχει ή δεν είναι προσβάσιμη (π.χ., ιδιωτική ή προστατευμένη) του αντικειμένου. Αν η ιδιότητα έχει δηλωθεί και είναι προσβάσιμη, τότε το __set() δεν θα κληθεί και η ανάθεση θα γίνει απευθείας.
Παράδειγμα:
class Example {
private $data = [];
public function __set($name, $value) {
echo "__set καλείται για την ιδιότητα '$name' με την τιμή '$value'\n";
$this->data[$name] = $value;
}
public $existingProp;
}
$obj = new Example();
$obj->existingProp = 123; // __set δεν καλείται
$obj->newProp = 456; // __set καλείται
Σε αυτό το παράδειγμα, η ανάθεση $obj->existingProp = 123; γίνεται απευθείας, ενώ $obj->newProp = 456; καλεί τη μέθοδο __set(), επειδή το newProp δεν έχει δηλωθεί στην κλάση.