Junior
Ποιες μαγικές μεθόδους κλάσεων γνωρίζετε;
sobes.tech AI
Απάντηση από AI
Οι μαγικές μέθοδοι στο PHP είναι ειδικές μέθοδοι που καλούνται αυτόματα σε συγκεκριμένα γεγονότα. Ξεκινούν με __ (διπλό κάτω παύλα).
Οι κύριες μαγικές μέθοδοι:
__construct(): Καλείται κατά τη δημιουργία μιας νέας στιγμιότυπου της κλάσης. Χρησιμοποιείται για την αρχικοποίηση του αντικειμένου.__destruct(): Καλείται κατά τη διαγραφή ενός αντικειμένου ή το τέλος του σεναρίου. Χρησιμοποιείται για την απελευθέρωση πόρων.__call(string $name, array $arguments): Καλείται κατά την προσπάθεια κλήσης μιας μη προσβάσιμης ή μη υπάρχουσας μεθόδου.__callStatic(string $name, array $arguments): Καλείται κατά την προσπάθεια κλήσης μιας μη προσβάσιμης ή μη υπάρχουσας στατικής μεθόδου.__get(string $name): Καλείται κατά την προσπάθεια πρόσβασης σε μια μη προσβάσιμη ή μη υπάρχουσα ιδιότητα.__set(string $name, mixed $value): Καλείται κατά την προσπάθεια ορισμού τιμής σε μια μη προσβάσιμη ή μη υπάρχουσα ιδιότητα.__isset(string $name): Καλείται κατά την χρήσηisset()ήempty()σε μια μη προσβάσιμη ή μη υπάρχουσα ιδιότητα.__unset(string $name): Καλείται κατά την χρήσηunset()σε μια μη προσβάσιμη ή μη υπάρχουσα ιδιότητα.__serialize(): Καλείται πριν από την σειριοποίηση του αντικειμένου μεserialize(). Επιστρέφει έναν πίνακα ιδιοτήτων για σειριοποίηση.__unserialize(array $data): Καλείται κατά την αποσειριοποίηση του αντικειμένου μεunserialize(). Λαμβάνει έναν πίνακα δεδομένων για την αποκατάσταση των ιδιοτήτων.__toString(): Επιτρέπει την αντιμετώπιση του αντικειμένου ως συμβολοσειρά. Καλείται κατά την προσπάθεια εκτύπωσης του αντικειμένου ως συμβολοσειρά (π.χ., μεecho). Πρέπει να επιστρέφει μια συμβολοσειρά.__invoke(...$arguments): Επιτρέπει την αντιμετώπιση του αντικειμένου ως συνάρτηση. Καλείται κατά την προσπάθεια κλήσης του αντικειμένου ως συνάρτηση.__set_state(array $properties): Καλείται κατά την αποκατάσταση του αντικειμένου μεvar_export(). Λαμβάνει έναν πίνακα ιδιοτήτων του αντικειμένου.__debugInfo(): Καλείται κατά την χρήσηvar_dump()σε ένα αντικείμενο. Πρέπει να επιστρέφει έναν πίνακα με πληροφορίες για αποσφαλμάτωση.
Παραδείγματα χρήσης __construct και __toString:
<?php
class MyClass {
private $name;
public function __construct(string $name) {
$this->name = $name;
}
public function __toString(): string {
return "Αντικείμενο με όνομα: " . $this->name;
}
}
$obj = new MyClass("Δοκιμή");
echo $obj; // Θα καλέσει το __toString()
Παραδείγματα χρήσης __get και __set:
<?php
class MyClass {
private $data = [];
public function __set(string $name, mixed $value): void {
$this->data[$name] = $value;
}
public function __get(string $name): mixed {
if (array_key_exists($name, $this->data)) {
return $this->data[$name];
}
return null; // Ή ρίξτε εξαίρεση
}
}
$obj = new MyClass();
$obj->prop1 = "Τιμή 1"; // Θα καλέσει το __set()
echo $obj->prop1; // Θα καλέσει το __get()