Junior
Τι είναι οι μαγικές μέθοδοι στο PHP;
sobes.tech AI
Απάντηση από AI
Οι μαγικές μέθοδοι στο PHP είναι ειδικές μέθοδοι που καλούνται αυτόματα υπό ορισμένες συνθήκες. Τα ονόματά τους αρχίζουν με δύο κάτω παύλες (__).
Λίστα με τις κύριες μαγικές μεθόδους:
__construct(): Καλείται κατά τη δημιουργία ενός νέου αντικειμένου.__destruct(): Καλείται κατά την καταστροφή ενός αντικειμένου.__call($name, $arguments): Καλείται όταν προσπαθείτε να καλέσετε μια μη προσβάσιμη ή μη υπάρχουσα μέθοδο του αντικειμένου.__callStatic($name, $arguments): Καλείται όταν προσπαθείτε να καλέσετε μια μη προσβάσιμη ή μη υπάρχουσα στατική μέθοδο.__get($name): Καλείται όταν προσπαθείτε να πάρετε την τιμή μιας μη προσβάσιμης ιδιότητας του αντικειμένου.__set($name, $value): Καλείται όταν προσπαθείτε να ορίσετε την τιμή μιας μη προσβάσιμης ιδιότητας του αντικειμένου.__isset($name): Καλείται κατά τη χρήση τουisset()ήempty()σε μια μη προσβάσιμη ιδιότητα.__unset($name): Καλείται κατά τη χρήση τουunset()σε μια μη προσβάσιμη ιδιότητα.__sleep(): Καλείται πριν από την σειριοποίηση, επιστρέφει έναν πίνακα με τα ονόματα των ιδιοτήτων προς σειριοποίηση.__wakeup(): Καλείται μετά την αποσειριοποίηση.__toString(): Επιτρέπει στο αντικείμενο να συμπεριφέρεται ως μια συμβολοσειρά κατά τη χρήση σε ένα πλαίσιο συμβολοσειράς.__invoke($args): Καλείται όταν το σενάριο προσπαθεί να καλέσει το αντικείμενο ως συνάρτηση.__set_state(array $properties): Καλείται κατά την εξαγωγή του αντικειμένου με τη λειτουργίαvar_export().__clone(): Καλείται μετά την ολοκλήρωση του κλωνοποιήματος του αντικειμένου για να ρυθμίσει το αντίγραφο.__serialize(): Καλείται κατά τη σειριοποίηση, επιστρέφει έναν πίνακα δεδομένων για σειριοποίηση.__unserialize(array $data): Καλείται κατά τη deserialization, λαμβάνει τα δεδομένα από το__serialize().
Παραδείγματα χρήσης του __construct και __destruct:
<?php
class Example {
public function __construct() {
echo "Το αντικείμενο δημιουργήθηκε\n";
}
public function __destruct() {
echo "Το αντικείμενο καταστράφηκε\n";
}
}
$obj = new Example();
unset($obj); // Αναγκαστικά καταστρέφει το αντικείμενο
?>
Παραδείγματα χρήσης του __get και __set:
<?php
class DataStore {
private $data = [];
public function __set($name, $value) {
$this->data[$name] = $value;
}
public function __get($name) {
if (array_key_exists($name, $this->data)) {
return $this->data[$name];
}
return null; // Ή ρίξτε εξαίρεση
}
}
$store = new DataStore();
$store->name = "Alice"; // Καλεί __set
echo $store->name; // Καλεί __get
?>