Quali sono i metodi magici in PHP? e come implementarli?

Questo articolo ti fornirà una conoscenza dettagliata e completa dei vari metodi Magic in PHP con esempi.

Nel , le funzioni speciali possono essere definite in modo tale da poter essere chiamate automaticamente e non richiede alcuna chiamata di funzione per eseguire il codice all'interno di queste funzioni. Questa funzione è disponibile in un metodo speciale noto come metodi magici. In questo articolo, discuteremo i migliori metodi magici in PHP.

Cosa sono i metodi magici in PHP?

I metodi che iniziano con 2 trattini bassi (__) sono generalmente chiamati metodi Magic in PHP. I nomi di questi metodi sono limitati a qualche elenco di PHP parole chiave supportate che sono riservate. Quindi nessuna funzione dovrebbe essere definita con il nome di metodi magici PHP.





Magic-Methods-in-PHP

Di solito, queste funzioni dovrebbero essere definite dall'utente e non è necessario chiamarle esplicitamente.



Elenco dei metodi magici in PHP

  • __costruire()
  • __destruct ()
  • __call ($ fun, $ arg)
  • __callStatic ($ fun, $ arg)
  • __get ($ proprietà)
  • __set ($ proprietà, $ valore)
  • __isset ($ contenuto)
  • __unset ($ contenuto)
  • __dormire()
  • __svegliati()
  • __accordare()
  • __invocare()
  • __set_state ($ array)
  • __clone()
  • __informazioni di debug()
  • __costruire(): È un metodo che viene chiamato automaticamente dopo la creazione di un oggetto. Qui è possibile definire un numero qualsiasi di argomenti che verranno passati alla creazione degli oggetti.
classe sample {function user_def () {echo 'user defined constructor'} function __construct () {echo 'predefined constructor'}} $ obj = new sample ()?>

  • __destruct (): Il distruttore è una caratteristica comune del linguaggio orientato agli oggetti che viene attivato non appena non ci sono altri riferimenti a un particolare oggetto.
user_def () // verifica che l'oggetto venga distrutto o meno echo is_object ($ obj). ' '?>

  • __call ($ fun, $ arg): Questo metodo viene chiamato quando viene chiamato un metodo non definito o inaccessibile. Il che significa che viene chiamato quando un metodo non definito o inaccessibile viene invocato su un oggetto.
run ('insegnante') // Se il metodo che non esiste viene chiamato all'interno dell'oggetto, il metodo __call () verrà chiamato automaticamente. $ obj-> eat ('ashok', 'orange') $ obj-> user_define ()?>



  • __callStatic ($ fun, $ arg): Questo metodo viene chiamato quando un metodo non definito o inaccessibile viene richiamato in modo statico.
user_define ()?>

  • __get ($ proprietà): Questo metodo viene utilizzato per ottenere valori per le proprietà della classe create dinamicamente dal sovraccarico delle proprietà PHP.
name = $ name $ this-> reg = $ reg} funzione pubblica __get ($ propertyName) {if ($ propertyName == 'reg') {if ($ this-> reg> 30) {return $ this-> reg - 10} else {return $ this -> $ propertyName}} else {return $ this -> $ propertyName}}} $ obj = new Student ('Ashok', 60) // Istanzia l'oggetto con la classe Student e assegna i valori iniziali alle proprietà con il costruttore. echo 'Nome :'. $ obj-> nome. '' // Quando si accede alla proprietà privata, il metodo __get () verrà chiamato automaticamente, quindi possiamo ottenere il valore della proprietà indirettamente. echo 'reg :'. $ obj-> reg. '' // Il metodo __get () viene chiamato automaticamente , e restituisce valori diversi a seconda dell'oggetto stesso. ?>

selezione programma di ordinamento in java
  • __set ($ proprietà, $ valore): Questo metodo viene utilizzato per inserire valori per le proprietà della classe create dinamicamente dal sovraccarico delle proprietà PHP.
nome = $ nome $ questo-> reg = $ reg} funzione pubblica __set ($ proprietà, $ valore) {if ($ proprietà == 'reg') $ valore $ proprietà = $ valore funzione pubblica fun () {echo 'My name è '. $ this-> name.', Il mio numero di registrazione è '. $ this-> reg}} $ obj = new Student (' Ashok ', 40) // Nota che il valore iniziale sarà cambiato dal codice sotto. $ obj-> name = 'Sushma' // La proprietà 'name' verrà assegnata con successo. Se non esiste un metodo __set (), il programma genererà un'eccezione. $ obj-> age = 16 // La proprietà 'reg' verrà assegnata correttamente. $ obj-> reg = 160 // 160 è un valore non valido, quindi non può essere assegnato. $ obj-> fun ()?>

  • __isset ($ contenuto); Questo metodo verrà chiamato durante la chiamata a isset () o empty () per un membro non definito o inaccessibile. Viene invocato automaticamente mentre si controlla se una proprietà di sovraccarico richiesta è impostata o meno, utilizzando la funzione PHP isset ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __isset ($ content) {echo 'La proprietà {$ content} è privata , il metodo __isset () viene chiamato automaticamente. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Assegnato inizialmente. echo isset ($ obj-> sesso), '' echo isset ($ obj-> nome), '' echo isset ($ obj-> reg), ''?>

  • __unset ($ content): Questo metodo verrà chiamato durante la chiamata a reset () per un membro non definito o inaccessibile.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __unset ($ content) {echo 'Viene chiamato automaticamente quando usiamo il metodo unset () fuori dalla classe. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Assegnato inizialmente. unset ($ obj-> gender) unset ($ obj-> name) unset ($ obj-> reg)?>

  • __dormire(): Questo metodo viene chiamato per primo durante l'esecuzione di serialize (). Restituisce l'array delle proprietà dell'oggetto durante la pulizia degli oggetti della classe PHP prima della serializzazione.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} funzione pubblica __sleep () {echo 'Viene chiamato quando il metodo serialize () viene chiamato fuori dalla classe. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Deve restituire un valore di cui gli elementi sono il nome delle proprietà restituite. }} $ obj = new Student ('Ashok') // Inizialmente assegnato. echo serializza ($ obj) echo ''?>

  • __svegliati(): Questo metodo viene chiamato durante l'esecuzione di deserialization (). Ripristinare le proprietà e le risorse degli oggetti invocando la deserializzazione () sarebbe un lavoro inverso.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} funzione pubblica __sleep () {echo 'Viene chiamato quando il metodo serialize () viene chiamato fuori dalla classe. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Deve restituire un valore di cui gli elementi sono il nome delle proprietà restituite. } funzione pubblica __wakeup () {echo 'Viene chiamata quando il metodo unserialize () viene chiamato fuori dalla classe. '$ this-> name = 2 $ this-> gender =' Male '}} $ obj = new Student (' Ashok ') // Assegnato inizialmente. var_dump (serialize ($ obj)) var_dump (unserialize (serialize ($ obj)))?>

  • __accordare(): Questo metodo verrà chiamato durante l'utilizzo del metodo echo per stampare direttamente un oggetto. Si prevede che restituisca un valore stringa durante l'utilizzo di istanze di classe con istruzioni di stampa PHP.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __toString () {return 'go go go'}} $ obj = new Student ('Ashok') // Inizialmente assegnato. echo $ obj?>

  • __invocare(): Questo metodo è definito in una classe che verrà chiamata durante il tentativo di chiamare un oggetto in un modo per chiamare una funzione.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __invoke () {echo 'This is an object'}} $ obj = new Student ('Ashok') // Inizialmente assegnato . $ obj ()?>

  • __set_state ($ array): Questo metodo viene chiamato durante la chiamata a var_export (). È un metodo statico invocato durante l'esportazione dell'array di proprietà degli oggetti e si aspetta tale variabile dell'array come argomento.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender}} $ obj = new Student ('Ashok') // Inizialmente assegnato. var_export ($ obj)?>

  • __clone(): Questo metodo viene chiamato quando l'oggetto viene copiato.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __clone () {echo __METHOD __. 'stai clonando l'oggetto. '}} $ obj = new Student (' Ashok ') // Assegnato inizialmente. $ obj2 = clone $ obj var_dump ('oggetto1:') var_dump ($ obj) echo '' var_dump ('oggetto2:') var_dump ($ obj2)?>

  • __informazioni di debug(): Questo metodo viene chiamato da var_dump () durante il dumping di un oggetto per ottenere le proprietà che dovrebbero essere mostrate. Se il metodo non è definito su un oggetto, verranno visualizzate tutte le proprietà pubbliche, protette e private.
prop = $ val} funzione pubblica __debugInfo () {return ['propSquared' => $ this-> prop ** 2,]}} var_dump (new Sample (22))?>

Con questo, arriviamo alla fine di questo metodo magico nell'articolo di PHP. Spero che tu abbia un'idea dei vari metodi magici in PHP.

Controlla il da Edureka, una società di formazione online affidabile con una rete di oltre 250.000 studenti soddisfatti sparsi in tutto il mondo.

Hai domande per noi? Si prega di menzionarlo nella sezione commenti di ' Metodi magici in PHP 'E ti ricontatterò.