6.Le langage PHP

6.8.Programmation orientée objet

6.8.2.Utilisation d'une classe

6.8.2.1.Introduction

Vous aurez certainement rapidement besoin d'implémenter vos propres classes et interface comme nous le verrons dans le chapitre suivant, mais dans l'immédiat peut-être n'avez-vous besoin que d'utiliser des classes déjà existantes. C'est pourquoi nous vous proposons ici, d'apprendre à instancier un objet, à appeler une méthode (qu'elle soit statique ou pas) et enfin, nous verrons quelques fonctions et mots clés qui peuvent s'avérer utiles dans la manipulation des classes.
En bref:
  • $objet = new MaClasseAMoi($param); pour instancier un objet
  • $objet->maMethode($param); pour appeler une méthode
  • MaClasseAMoi::maMethode($param); (ou encore $objet::maMethode($param) depuis PHP 5.3.0) pour appeler une méthode statique
  • $objet->maVariable; pour accéder à une variable membre
  • MaClasseAMoi::$maVariable; pour accéder à une variable membre statique (voire $objet::$maVariable depuis PHP 5.3.0)
  • MaClasseAMoi::MA_CONSTANTE; pour accéder à une constante de classe
  • get_class($objet); pour retourner le nom de classe dont $objet est une instance
  • $object instanceof NomDeClasseOuInterface; pour tester si $objet est une instance de la classe ou de l'interface ou d'une classe fille

6.8.2.2.Instanciation d'une classe

L'instanciation (i.e. la création) d'un objet se fait par le mot clé new suivi du nom de la classe (en passant ou non des paramètres tout dépend de l'interface du constructeur) selon le modèle suivant.
<?php
$objet = new NomObjet($param);

6.8.2.3.Appel d'une méthode

L'appel d'une méthode (non statique) se fait via le délimiteur composé d'un tiret et d'un signe supérieur '->'.
<?php
$objet->nomMethode($param);
L'appel d'une méthode statique se fait via le délimiteur composé de deux deux-points '::'.
<?php
NomObjet::nomMethodeStatique($param);

6.8.2.4.Accès à une variable membre ou une constante de classe

Il est possible d'accéder à une variable membre (dans la limite de la visibilité de celle-ci) selon le même principe que pour les appels des méthodes c'est à dire avec '->'.
Pour les variables statiques et les constantes de classe c'est l'opérateur '::' qu'il convient d'utiliser (comme pour les méthodes statiques) en général après avoir indiqué le nom de la classe (mais depuis PHP 5.3.0, il est aussi possible de préciser un objet à la place du nom de la classe) et avant le nom de la variable que l'on noubliera pas de faire précéder du signe '$'
<?php
$objet->maVariable;
MaClasseAMoi::$maVariableStatique;
MaClasseAMoi::MA_CONSTANTE;
// Depuis 5.3.0 les lignes suivantes sont également valides
$objet::$maVariableStatique;
$objet::MA_CONSTANTE;

6.8.2.5.Quelques fonctions associées aux objets

6.8.2.5.1.get_class()

La fonction get_class() retourne, sous forme d'une chaîne de caractères, le nom de la classe dont l'objet passé en paramètre est l'instanciation.
<?php
$objet = new MaClasse();
echo get_class($objet); // retournera 'MaClasse';

6.8.2.5.2.instanceof

Mais get_class() ne permet pas de déterminer si un objet est une instanciation d'un objet héritant d'une autre classe ou implémentant telle ou telle interface. Pour cela, vous disposez du mot clé instanceof à placer après l'objet et suivi du nom de la classe ou interface.
<?php
$objet = new MaClasse();
if ($objet instanceof MaClasse) echo 'Oui, c\'est bien un objet MaClasse';
if ($objet instanceof MaClasseMere) echo 'Oui, c\'est bien un objet héritant de MaClasseMere';
if ($objet instanceof MonInterface) echo 'Oui, c\'est bien un objet implementant MonInterface';

6.8.2.6.Conclusion

Vous êtes maintenant en mesure de mettre en pratique (de façon basique) l'utilisation de objets avec les classes natives de PHP comme DateTime.
<?php
// Instanciation d'un objet DateTime initialisé avec une date
$objet = new DateTime('2020-12-31');

// Appel de la méthode format() pour un affichage au format "jour mois année"
echo $objet->format('d/m/Y')."\n"; // Retournera 31/12/2020

// Appel de la méthode statique createFromFormat()
$objet2 = DateTime::createFromFormat('d/m/Y', '31/12/2020');

if ($objet2 instanceof DateTime) {
    echo '$objet2 est bien un objet DateTime'."\n";
}
if ($objet2 instanceof DateTimeInterface) {
    echo '$objet2 qui est un objet '.get_class($objet2).
         ' est une implémentation de DateTimeInterface (depuis PHP 5.5.0)'."\n";
}
// Appel de la méthode format() pour un affichage au format
// défini par la constante de classe DateTime::ISO8601
echo $objet2->format(DateTime::ISO8601)."\n";
Ici vous pouvez apprendre :
1.Introduction
2.Installation de PHP
3.Exécuter un script PHP
4.Configuration et environnement d'exécution de PHP
5.L'environnement de développement
6.Le langage PHP
6.1.Introduction
6.2.Mon premier script
6.3.La syntaxe
6.4.Les boucles (for, while, foreach, do) en PHP
6.5.Les tableaux (array) en PHP
6.6.Les fonctions
6.7.Include
6.8.Programmation orientée objet
6.8.1.Introduction
6.8.2.Utilisation d'une classe
6.8.2.1.Introduction
6.8.2.2.Instanciation d'une classe
6.8.2.3.Appel d'une méthode
6.8.2.4.Accès à une variable membre ou une constante de classe
6.8.2.5.Quelques fonctions associées aux objets
6.8.2.6.Conclusion
6.8.3.Les exceptions
6.8.4.Implémentation d'une classe ou interface
6.8.5.Les espaces de nom
6.9.Les fonctions de manipulation de tableaux
6.10.Les dates
6.11.Fichiers et répertoires
6.12.Les paramètres d'entrée d'un script PHP
6.13.Utilisation de la librairie graphique
6.14.JpGraph pour tracer courbes et diagrammes
6.15.Utilisation de bases de données avec PHP
6.16.LDAP
6.17.Parser un document XML
6.18.Génération de documents PDF en PHP
6.19.Envoyer un mail
6.20.Créer un webmail avec IMAP
6.21.Droits utilisateurs: chmod 777
6.22.Localization (l10n) et Traduction
7.PHP pour le web
8.Internationalisation (i18n) et encodage en PHP
9.Les débogueurs
10.Programmer en PHP en toute sécurité
11.Bibilothèque PEAR
12.Zend Framework 2 et 3
13.Installation de Zend Framework 2
14.Joomla
15.Composer
16.PHPUnit
17.PHPDocumentor
18.Exemples de scripts PHP
19.Erreurs fréquentes et les solutions
20.Archives
Forum PHP
Version imprimable: imprimer