Ce billet vient récapituler la série sur PHP Objet que j’ai effectuée entre mai à juillet 2009. Le but est de faire le point sur PHP Objet, sur mes connaissances et sur les publications réalisés à ce sujet sur 30minparjour. Désormais, j’essayerai de faire un tel résumé pour toutes les séries que j’aborderai. C’est long et fastidieux, mais je pense que cela m’est utile pour faire le point. J’espère que cela vous servira aussi.
Résumons quelques points importants
Petit résumé sur les classes
[abstract ]class MaClasse [extends AutreClasse implements Interface] { public|protected|private [static] $maVariable [= valeur]; public static $etat = 1; /** * Constructeur */ public|protected|private function MaClass|__construct() { // Déclaration des variables et autres } /** * Fonction classique */ public|protected|private [static final abstract] function maMethode() { // Action de la fonction maMethode $this--->maVariable = 'test'; self::$etat = 0; $this->autreMethode(); [parent::autreMethode();] } public function $autreMethode() { echo 'Hello world!'; } }
Au passage, je rappelle qu’une classe peut implémenter plusieurs interfaces, mais ne peut hériter que d’une seule classe.
Petit résumé sur les interfaces
interface Interface [extends AutreInterface] { /** * Fonction classique */ public function $maMethode(); /** * Autre fonction classique */ public function $autreMethode(); }
Petit résumé sur les singletons
class Singleton { /** * Variable static valant null si la classe n'est pas encore instanciée * ou contenant l'instance si la classe est instanciée. * On y accède avec self::$_instance */ private static $_instance = null; /** * Constructeur private inaccessible en dehors de la classe */ private function __construct() { // On instancie ce qu'il faut } /** * Accessor static, donc accessible sans être instancié, renvoyant * l'instance, en la créant si besoin */ public static function getInstance() { if (self::$_instance == null) { self::$_instance = new Singleton(); } return self::$_instance; } }
Quelques méthodes magiques utiles
- __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;
- __clone() : Appelé lorsque l’on essaie de cloner l’objet. Exemple d’utilisation
Conclusion
Je crois qu’on vient de faire un tour vraiment rapide mais plus ou moins complet du PHP Objet. A mon sens, il manque 3 notions à ce résumé (mais on ne peut pas tout résumer) :
- Les exceptions. Il faudrait que je m’y mette un jour. Heureusement il existe un très bon tutoriel sur « Apprendre PHP » : Les exceptions.
- Un autre chose plutôt cool qu’aborde « Apprendre PHP » est l’interface Iterator, quoi que je ne vois pas trop l’interêt en PHP, mais je sais combien c’est cool en Java !
- La copie d’une classe. Je l’ai quand même vraiment pas mal résumé ici : Le clônage n’est pas une référence.
Billets traitant de PHP Objet
J’ai trié et classé toutes les publications que j’ai fait sur ce blog à propos du PHP Objet.
Apprentissage
- Introduction au PHP Objet (class, objet, attribut, méthode)
- Constructeur et notion d’héritage
- Apparition de la visibilité de méthodes prédéfinies en PHP 5
- La visibilité du vois
- L’opérateur cons avec les mots clefs self et parent
- Pour se fixer les idées sur self et this
- Utiliser les méthodes et les attributs d’une autre class
- Le clonage n’est pas une référence
- Interfaces : plus utiles qu’il n’y paraît
- Interfaces : les mousquetaires sont toujours de la partie
- Singleton(s) !
- Classes abstraites et finales
Application
- Une seule et même fonction pour différents systèmes de gestion de base de données
- BBcode Toolbar en PHP Objet – Version 1 et sa Documentation d’un module toolbar en PHP objet
- Traduction instantannée avec BabelFish
- Cahier des charges : Doodle like en PHP Objet
Trucs et astuces
- Rendre __construct() compatible PHP 4
- Un objet en sortie de requêtes MySQL
- Quelques méthodes et constantes magiques ou prédéfinies
- Vocabulaires à connaître de la POO
Documentation et tutoriels
Je vous présente les quelques sites que j’ai fréquemment utilisé pour comprendre le fonctionnement et les finesses de PHP et du PHP orienté objet.
- L’incontournable et très bien fourni Manuel PHP
- Apprendre PHP par l’excellent auteur du livre PHP5 Avancé !
- Cours de PHP 5 sur Developpez.com