Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; WPMinify has a deprecated constructor in /var/www/html/wp-content/plugins/wp-minify/wp-minify.php on line 28

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; WPMinifyCommon has a deprecated constructor in /var/www/html/wp-content/plugins/wp-minify/common.php on line 2

Notice: is_feed was called incorrectly. Conditional query tags do not work before the query is run. Before then, they always return false. Please see Debugging in WordPress for more information. (This message was added in version 3.1.0.) in /var/www/html/wp-includes/functions.php on line 4778

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; ReCaptcha has a deprecated constructor in /var/www/html/wp-content/plugins/wp-recaptcha/recaptchalib.php on line 42

Warning: Use of undefined constant REQUEST_URI - assumed 'REQUEST_URI' (this will throw an Error in a future version of PHP) in /var/www/html/wp-content/themes/typology/functions.php on line 73
Les méthodes « magiques » en PHP5 - Tellaw.org

Les méthodes « magiques » en PHP5

L

PHP5 apporte à PHP les fondements de la programmation objet. PHP5 apporte un certain nombre de méthodes utilisables dans les Objets afin d’automatiser certaines taches, ou intercepter des appels à des méthodes / propriétés inexistantes… D’un point de vue architecture c’est une mauvaise pratique que de se baser sur ces méthodes, ca reste dans certains cas d’exceptions, très pratique

Liste des méthodes « magiques » en PHP5 :

  • __construct()
  • __destruct()
  • __set()
  • __get()
  • __call()
  • __toString()
  • __sleep()
  • __wakeup()
  • __isset()
  • __unset()
  • __autoload()
  • __clone()

__construct()
Cette méthode est appelée lors de la construction d’un objet.

__destruct()
Cette méthode est appelée lors de la destruction d’un objet.

__set()
Cette méthode est appelée automatiquement lors de l’assignation d’une valeur à un attribut inexistant.

__get()
Cette méthode est appelée automatiquement lors de la lecture d’une valeur à un attribut inexistant.

__call()
Cette méthode est appelée automatiquement lors de l’appel à une méthode inexistante.

__toString()
Cette méthode est appelée lors de la tentative d’interprétation d’un objet en String. (via un echo ou print…)

__sleep()
Cette méthode sert à la sérialisation d’un objet en PHP5. Elle doit définir la façon dont PHP doit le sérialiser.

__wakeup()
Cette méthode doit définir la dé-sérialisation d’un objet en PHP5.

__isset()
Cette méthode est utilisée lors de la vérification de l’existence d’un attribut via un appel à la méthode « isset »..

__unset()
Méthode appelée lors de la destruction de l’objet.

__autoload()
Cette méthode est appelée lorsque vous essayez de charger un objet dans un fichier séparé sans l’avoir précédemment chargé via un include, include_once, require ou require_once.

__clone()
cette méthode définie la façon de cloner un objet.

Exemple :

Ceci résulte dans la sortie suivante :

Ce n’est pas une bonne pratique !

En effet, à part dans des cas isolés, il est fortement recommendé de definir clairement vos bean, avec des propriétées, des setters et des getters.

La bonne pratique voudrait :

Il est important pour la pérennité du code de respecter les bonnes pratiques, mais parfois, il faut être flexible, voila l’idée de cet article.

About the author

Eric Wallet

3 comments

 

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

  • C’est vrai que développer en objet (lorsqu’on débute) est bien plus long que de se la jouer à la old school, mais le travail est pérenne et si comme tu le dis on respecte un certain nombre de bonnes pratiques, on obtient un code réutilisable, là où à l’époque on devait sans cesse redéfinir les mêmes fonctions ou se faire des fichiers regroupant nos fonctions sans une vraie bonne organisation autour d’un objet.

Commentaires récents

Étiquettes