Quelques méthodes et constantes magiques ou prédéfinies

Publié dans PHP objet | Marqué avec , , , , ,
Share

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 applique isset() à une propriété de l’objet
  • __unset() : Déclenchée si on applique unset() à une propriété de l’objet -> différence avec __destruct() ?
  • __sleep() : Exécutée si la fonction serialize() est appliquée à l’objet. Exemple d’utilisation
  • __wakeup() : Exécutée si la fonction unserialize() 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 fonction var_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

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*