Attributs ou méthodes qui n’existent pas ?
Avant de faire un petit récapitulatif magique ou déjà défini (mouahaha), voyons une petite notion importante du PHP objet : il est possible de modifier et de lire la valeur d’un attribut qui n’existe pas (ah horreur), par contre, on ne peut utiliser une méthode qui n’existe pas (ah bah ça tombe bien alors !). Je m’explique en codant :
class Chat { } $unChat = new Chat(); $unChat->couleur = 'noir'; $unChat->etat = 'sorti ses griffes'; echo 'Mon chat '.$unChat->couleur.' a '.$unChat->etat.'.';
Eh oui, ce petit exemple affichera bien : « Mon chat noir a sorti ses griffes . ». C’est horrible, n’est-ce-pas ? Heureusement avec __set()
et __get()
, on va pouvoir empêcher ce types d’actions et en profiter pour vérifier le type des valeurs que l’on assigne à nos attributs.
Par contre :
class Chat { } $unChat = new Chat(); $unChat->etreGentils();
Nous renverra une jolie petite erreur ! (heu, oui, je n’aime pas tellement les chats. Enfin, cela dit, je n’ai rien contre eux non plus) Heureusement la méthode magique __call()
va nous permettre de rattraper ce petit bémol. Mais tout cela est très bien expliqué sur Apprendre PHP, alors sans plus tarder voilà une liste des méthodes et des constantes magiques, ainsi que des fonctions prédéfinies avec à chaque fois une explique, ou des exemples tiré du manuel PHP, de tutoriels sur le Web ou de mes propres mot.
Méthodes magiques
Plus d’informations dans le Manuel PHP (liste tirée de Developpez.com et modifiée, voir agrémentée, par mes soins)
__construct()
: Appelée lorsqu’on tente de construire la class__destruct()
: Appelée lorsqu’on tente de détruire la class__set()
: Déclenchée lors de l’accès en écriture à une propriété de l’objet. Exemple d’utilisation__get()
: Déclenchée lors de l’accès en lecture à une propriété de l’objet. Exemple d’utilisation__call()
: Déclenchée lors de l’appel d’une méthode inexistante de la classe (appel non static). Exemple d’utilisation__callstatic()
: Déclenchée lors de l’appel d’une méthode inexistante de la classe (appel static) : disponible depuis PHP 5.3 et 6.0__isset()
: Déclenchée si on appliqueisset()
à une propriété de l’objet__unset()
: Déclenchée si on appliqueunset()
à une propriété de l’objet -> différence avec__destruct()
?__sleep()
: Exécutée si la fonctionserialize()
est appliquée à l’objet. Exemple d’utilisation__wakeup()
: Exécutée si la fonctionunserialize()
est appliquée à l’objet. Exemple d’utilisation__toString()
: Appelée lorsque l’on essaie d’afficher directement l’objet :echo $object;
__set_state()
: Méthode static lancée lorsque l’on applique la fonctionvar_export()
à l’objet__clone()
: Appelé lorsque l’on essaie de cloner l’objet. Exemple d’utilisation__autoload()
: Cette fonction n’est pas une méthode, elle est déclarée dans le scope global et permet d’automatiser les « include/require » de classes PHP
Constantes magiques
Plus d’informations dans le Manuel PHP (je n’ai rien ajouté, ça me paraissait clair)
__CLASS__
Le nom de la classe courante. (Ajouté en PHP 4.3.0) Depuis PHP 5, cette constante retourne le nom de la classe comme il a été déclaré (sensible à la casse). En PHP 4, cette valeur est toujours en minuscule.-
__METHOD__
Le nom de la méthode courante. (Ajouté en PHP 5.0.0) Le nom de la méthode est retourné comme il a été déclaré (sensible à la casse). __NAMESPACE__
Le nom de l’espace de noms courant (sensible à la casse). Cette constante est définie au moment de la compilation (Ajouté en PHP 5.3.0).-
__LINE__
La ligne courante dans le fichier. __FILE__
Le chemin complet et le nom du fichier courant. Si utilisé pour une inclusion, le nom du fichier inclus est retourné. Depuis PHP 4.0.2,\__FILE__
contient toujours le chemin absolu pour les liens symboliques alors que les anciennes versions contenaient le chemin relatif, dans certaines circonstances.-
__DIR__
Le dossier du fichier. Si utilisé dans une inclusion, le dossier du fichier inclus sera retourné. C’est l’équivalent de dirname(\__FILE__
). Ce nom de dossier ne contiendra pas de slash final, sauf si c’est le dossier racine. (Ajouté en PHP 5.3.0.) __FUNCTION__
Le nom de la fonction. (Ajouté en PHP 4.3.0) Depuis PHP 5, cette constante retourne le nom de la fonction comme il a été déclaré (sensible à la casse). En PHP 4, cette valeur est toujours en minuscule.
Méthodes prédéfinies
Plus d’informations dans le Manuel PHP (je n’ai presque rien ajouté, ça me paraissait clair)
-
class_alias
: Créé un alias de la classe class_exists
: Vérifie que la classe a été définie-
get_called_class
: Le nom de la classe en « Late Static Binding », c’est la class courante get_class_methods
: Retourne les noms des méthodes de la classe-
get_class_vars
: Retourne les valeurs par défaut des attributs de la classe get_class
: Retourne la classe de l’objet-
get_declared_classes
: Liste toutes les classes prédéfinies dans PHP get_declared_interfaces
: Retourne un tableau avec toutes les interfaces déclarées-
get_object_vars
: Retourne les propriétés de l’objet get_parent_class
: Retourne le nom de la classe de l’objet-
interface_exists
: Vérifie si l’interface a été définie is_a
: Vérifie si l’objet fait parti de la classe ou a cette classe comme parents-
is_subclass_of
: Détermine si l’objet est une sous-classe method_exists
: Vérifie que la méthode existe pour la classe-
property_exists
: Vérifie si un l’objet ou la classe possède un attribut