Ποιες είναι οι μαγικές μέθοδοι στην PHP; και πώς να τα εφαρμόσετε;

Αυτό το άρθρο θα σας παράσχει μια λεπτομερή και περιεκτική γνώση των διαφόρων μαγικών μεθόδων στην PHP με παραδείγματα.

Σε , οι ειδικές λειτουργίες μπορούν να οριστούν με τέτοιο τρόπο ώστε να μπορούν να κληθούν αυτόματα και δεν απαιτεί καμία κλήση λειτουργίας για την εκτέλεση του κώδικα μέσα σε αυτές τις λειτουργίες. Αυτή η δυνατότητα είναι διαθέσιμη σε μια ειδική μέθοδο γνωστή ως μαγικές μέθοδοι. Σε αυτό το άρθρο, θα συζητήσουμε τις κορυφαίες μαγικές μεθόδους στην PHP.



Τι είναι οι μαγικές μέθοδοι στην PHP;

Οι μέθοδοι που ξεκινούν με 2 κάτω παύλες (__) καλούνται γενικά Magic μέθοδοι στην PHP. Αυτά τα ονόματα μεθόδων περιορίζονται σε κάποια λίστα PHP υποστηριζόμενες λέξεις-κλειδιά που είναι δεσμευμένες. Επομένως, καμία συνάρτηση δεν πρέπει να οριστεί με το όνομα των μαγικών μεθόδων PHP.



jenkins vs μαριονέτα εναντίον σεφ

Magic-Methods-in-PHP

Συνήθως, αυτές οι λειτουργίες πρέπει να καθορίζονται από τον χρήστη και δεν χρειάζεται να τις καλέσετε ρητά.



Κατάλογος μαγικών μεθόδων στην PHP

  • __κατασκευάσει()
  • __destruct ()
  • __call ($ διασκέδαση, $ arg)
  • __callStatic ($ διασκέδαση, $ arg)
  • __get (ιδιοκτησία $)
  • __set ($ ιδιοκτησία, τιμή $)
  • __isset (περιεχόμενο $)
  • __unset ($ περιεχόμενο)
  • __ύπνος()
  • __Ξύπνα()
  • __toString ()
  • __επικαλούμαι()
  • __set_state (πίνακας $)
  • __ κλώνος ()
  • __πληροφορίες εντοπισμού σφαλμάτων()
  • __κατασκευάσει(): Είναι μια μέθοδος που καλείται αυτόματα μετά τη δημιουργία ενός αντικειμένου. Μπορείτε να ορίσετε οποιονδήποτε αριθμό ορισμάτων εδώ που θα περάσει όταν δημιουργούνται αντικείμενα.
δείγμα τάξης {function user_def () {echo 'user define konstror'} function __construct () {echo 'προκαθορισμένο κατασκευαστή'}} $ obj = νέο δείγμα ()?>

  • __destruct (): Το Destructor είναι ένα κοινό χαρακτηριστικό της αντικειμενοστρεφούς γλώσσας που ενεργοποιείται μόλις δεν υπάρχουν άλλες αναφορές σε ένα συγκεκριμένο αντικείμενο.
user_def () // ελέγξτε το αντικείμενο έχει καταστραφεί ή όχι το echo is_object ($ obj). ' '?>

  • __call ($ διασκέδαση, $ arg): Αυτή η μέθοδος καλείται όταν καλείται μια απροσδιόριστη ή απρόσιτη μέθοδος. Αυτό σημαίνει ότι καλείται όταν μια απροσδιόριστη ή απρόσιτη μέθοδος καλείται σε ένα αντικείμενο.
run ('Teacher') // Εάν η μέθοδος που δεν υπάρχει καλείται μέσα στο αντικείμενο, τότε η μέθοδος __call () θα κληθεί αυτόματα. $ obj-> eat ('ashok', 'orange') $ obj-> user_define ()?>



  • __callStatic ($ διασκέδαση, $ arg): Αυτή η μέθοδος καλείται όταν μια απροσδιόριστη ή απρόσιτη μέθοδος καλείται με στατικό τρόπο.
user_define ()?>

  • __get (ιδιοκτησία $): Αυτή η μέθοδος χρησιμοποιείται για τη λήψη τιμών για ιδιότητες κλάσης που δημιουργούνται δυναμικά από υπερφόρτωση ιδιοτήτων PHP.
name = $ name $ this-> reg = $ reg} public function __get ($ propertyName) {if ($ propertyName == 'reg') {if ($ this-> reg> 30) {επιστροφή $ this-> reg - 10} αλλιώς {return $ this -> $ propertyName}} else {return $ this -> $ propertyName}}} $ obj = new Student ('Ashok', 60) // Δημιουργήστε το αντικείμενο με την τάξη Student και εκχωρήστε αρχικές τιμές στις ιδιότητες με τον κατασκευαστή. echo 'Όνομα :'. $ obj-> όνομα. '' // Όταν γίνεται πρόσβαση στην ιδιωτική ιδιοκτησία, η μέθοδος __get () θα κληθεί αυτόματα, ώστε να μπορούμε να λάβουμε την τιμή της ιδιότητας έμμεσα. echo «reg :». $ obj-> reg. // Η μέθοδος __get () καλείται αυτόματα , και επιστρέφει διαφορετικές τιμές ανάλογα με το ίδιο το αντικείμενο. ?>

  • __set ($ property, $ value): Αυτή η μέθοδος χρησιμοποιείται για την τοποθέτηση τιμών για ιδιότητες κλάσης που δημιουργούνται δυναμικά από υπερφόρτωση ιδιοτήτων PHP.
name = $ name $ this-> reg = $ reg} public function __set ($ property, $ value) {if ($ property == 'reg') $ value $ property = $ value δημόσια συνάρτηση fun () {echo 'My το όνομα είναι '. $ this-> name.', Ο αριθμός εγγραφής μου είναι '. $ this-> reg}} $ obj = νέος μαθητής (' Ashok ', 40) // Σημειώστε ότι η αρχική τιμή θα αλλάξει από τον κωδικό παρακάτω. $ obj-> name = 'Sushma' // Η ιδιότητα 'name' θα εκχωρηθεί με επιτυχία. Εάν δεν υπάρχει μέθοδος __set (), τότε το πρόγραμμα θα δημιουργήσει μια εξαίρεση. $ obj-> age = 16 // Η ιδιότητα 'reg' θα εκχωρηθεί με επιτυχία. $ obj-> reg = 160 // 160 είναι μη έγκυρη τιμή, οπότε δεν μπορεί να αντιστοιχιστεί. $ obj-> διασκέδαση ()?>

  • __isset ($ περιεχόμενο); Αυτή η μέθοδος θα κληθεί κατά την κλήση του Isset () ή του κενού () για ένα απροσδιόριστο ή απρόσιτο μέλος. Επικαλείται αυτόματα κατά τον έλεγχο εάν έχει οριστεί μια απαιτούμενη υπερφορτωμένη ιδιότητα ή όχι, χρησιμοποιώντας τη συνάρτηση PHP Isset ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} δημόσια συνάρτηση __isset ($ content) {echo 'Η ιδιότητα {$ content} είναι ιδιωτική , η μέθοδος __isset () καλείται αυτόματα. 'echo isset ($ this -> $ content)}} $ obj = νέος μαθητής (' Ashok ', 30) // Αρχικά ανατέθηκε. echo isset ($ obj-> gender), 'echo isset ($ obj-> name),' echo isset ($ obj-> reg), '?>

  • __unset ($ περιεχόμενο): Αυτή η μέθοδος θα καλείται κατά την επαναφορά κλήσεων () για ένα απροσδιόριστο ή απρόσιτο μέλος.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} δημόσια συνάρτηση __unset ($ content) {echo 'Λέγεται αυτόματα όταν χρησιμοποιούμε τη μέθοδο unset () εκτός της τάξης. 'echo isset ($ this -> $ content)}} $ obj = νέος μαθητής (' Ashok ', 30) // Αρχικά ανατέθηκε. unset ($ obj-> gender) unset ($ obj-> name) unset ($ obj-> reg);>

  • __ύπνος(): Αυτή η μέθοδος καλείται πρώτη κατά την εκτέλεση serialize (). Επιστρέφει τη συστοιχία ιδιοτήτων του αντικειμένου κατά τον καθαρισμό αντικειμένων κλάσης PHP πριν από την σειριοποίηση.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} δημόσια συνάρτηση __sleep () {echo 'Καλείται όταν η μέθοδος serialize () καλείται εκτός της τάξης. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Πρέπει να επιστρέφει μια τιμή της οποίας τα στοιχεία είναι το όνομα των ιδιοτήτων που επιστρέφονται. }} $ obj = νέος μαθητής ('Ashok') // Αρχικά ανατέθηκε. echo serialize ($ obj) echo '?>

  • __Ξύπνα(): Αυτή η μέθοδος καλείται ενώ εκτελείται αποεστεροποίηση (). Θα αντιστρέψει την εργασία για την αποκατάσταση ιδιοτήτων και πόρων αντικειμένων κατά την επανάκληση της αποεστερίωσης ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} δημόσια συνάρτηση __sleep () {echo 'Καλείται όταν η μέθοδος serialize () καλείται εκτός της τάξης. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Πρέπει να επιστρέφει μια τιμή της οποίας τα στοιχεία είναι το όνομα των ιδιοτήτων που επιστρέφονται. } δημόσια λειτουργία __wakeup () {echo 'Καλείται όταν η μέθοδος unserialize () καλείται εκτός της τάξης. '$ this-> name = 2 $ this-> gender =' Male '}} $ obj = new Student (' Ashok ') // Αρχικά ανατέθηκε. var_dump (serialize ($ obj)) var_dump (unserialize (serialize ($ obj)));>

πρόγραμμα πολλαπλασιασμού matrix σε Java
  • __toString (): Αυτή η μέθοδος θα καλείται κατά τη χρήση της μεθόδου echo για να εκτυπώσετε ένα αντικείμενο απευθείας. Αναμένεται να επιστρέψει μια τιμή συμβολοσειράς κατά τη χρήση παρουσιών κλάσης με δηλώσεις εκτύπωσης PHP.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} δημόσια λειτουργία __toString () {return 'go go go'}} $ obj = νέος μαθητής ('Ashok') // Αρχικά ανατέθηκε. echo $ obj?>

  • __επικαλούμαι(): Αυτή η μέθοδος ορίζεται σε μια κλάση που θα κληθεί ενώ προσπαθεί να καλέσει ένα αντικείμενο με τρόπο λειτουργίας κλήσης.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} δημόσια συνάρτηση __invoke () {echo 'This is a object'}} $ obj = new Student ('Ashok') // Αρχικά ανατέθηκε . $ obj ()?>

  • __set_state (πίνακας $): Αυτή η μέθοδος καλείται κατά την κλήση του var_export (). Πρόκειται για μια στατική μέθοδο που επικαλείται κατά την εξαγωγή αντικειμένων πίνακα ιδιοτήτων και αναμένει τέτοια μεταβλητή πίνακα ως όρισμα.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender}} $ obj = new Student ('Ashok') // Αρχικά ανατέθηκε. var_export ($ obj);>

  • __ κλώνος (): Αυτή η μέθοδος καλείται όταν αντιγράφεται το αντικείμενο.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} δημόσια λειτουργία __clone () {echo __METHOD __. 'κλωνοποιείτε το αντικείμενο. '}} $ obj = νέος μαθητής (' Ashok ') // Αρχικά ανατέθηκε. $ obj2 = clone $ obj var_dump ('object1:') var_dump ($ obj) echo '' var_dump ('object2:') var_dump ($ obj2);>

  • __πληροφορίες εντοπισμού σφαλμάτων(): Αυτή η μέθοδος καλείται από το var_dump () κατά την απόρριψη ενός αντικειμένου για τη λήψη των ιδιοτήτων που πρέπει να εμφανίζονται. Εάν η μέθοδος δεν ορίζεται σε ένα αντικείμενο, τότε θα εμφανίζονται όλες οι δημόσιες, προστατευμένες και ιδιωτικές ιδιότητες.
prop = $ val} δημόσια συνάρτηση __debugInfo () {return ['propSquared' => $ this-> prop ** 2,]}} var_dump (νέο δείγμα (22));>

το μοντέλο Java view controller

Με αυτό, φτάνουμε στο τέλος αυτής της μαγικής μεθόδου στο άρθρο PHP. Ελπίζω να έχετε μια ιδέα για τις διάφορες μαγικές μεθόδους στο PHP.

Δείτε το από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία εκμάθησης με δίκτυο περισσότερων από 250.000 ικανοποιημένων μαθητών σε όλο τον κόσμο.

Έχετε μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων του ' Μαγικές μέθοδοι στο PHP Και θα επικοινωνήσω μαζί σας.