Premier jour sur la programmation orientée objet (POO) en PHP. Nous allons voir ce qu’est un objet et donc détailler toutes ces histoires de class, attribut, méthode et objet. A l’assaut !
Class, attribut et méthode
En PHP, un objet est en fait une instance d’une class. Par exemple, on peut créer une class Blog qui représente les blogs de manière générique en décrivant par exemple le nom d’un blog, sa description rapide… Ce sont ses attributs. Cette class pourrait aussi permettre d’écrire un nouveau billet, ou d’ajouter une catégorie. Ce sont ses méthodes. A partir de là, on va pouvoir instancier cette class Blog afin de définir les objets blogs de Jean-François, blog photos d’Agnés, etc… Si on résume :
* class : objet générique contenant des attributs et des méthodes. Le nom d’une class commence en général par une majuscule. Définie par le mot clef class.
* attribut : variable d’une class. Définie par le mot clef var
, const
ou rien du tout.
* méthode : fonction d’une class. Définie par le mot clef function
.
* objet : instance d’une class. Définie par le mot clef new
. Maintenant, nous allons créer une class Blog avec ses différents attributs et méthodes.
<?php class Blog { var $nom; var $description; var $url; const COPYRIGHT = 'Bnbox'; function ajouter_billet() { echo 'Ceci est mon premier billet.<br />'; } function ajouter_categorie() { echo 'Ceci est ma première catégorie.<br />'; } }
Reste à l’instancier avec le mot clé new
pour pouvoir l’utiliser. On accédera aux attributs et aux méthodes à l’aide du sélecteur flêche ->
. Toutefois, on ne peut pas accéder aux constantes avec le sélecteur flêche, par contre avec le sélecteur cons ::
, pas de problème : MaClass::CONSTANTE
. En général, on nomme les constantes tout en majuscule.
<?php $blogDeBN = new Blog(); // On remplie les attributs $blogDeBN->nom = '30 minutes par jour'; $blogDeBN->description = '30 minutes par jour au coeur de l\'informatique.'; $blogDeBN->url = 'http://30minparjour.la-bnbox.fr'; // On peut les afficher echo 'Nom du blog : '.$blogDeBN->nom.'<br />'; echo 'Copyright : '.Blog::COPYRIGHT.'<br />'; // On utilise les méthodes $blogDeBN->ajouter_billet(); $blogDeBN->ajouter_categorie(); // On peut aussi en créer un autre $blog = new Blog(); $blog->nom = 'Un blog'; $blog->ajouter_billet(); $blog->ajouter_categorie(); echo 'Nom du blog : '.$blog->nom.'<br />'; echo 'Copyright : '.Blog::COPYRIGHT.'<br />'; // Mais le nom du blog de BN n'a pas changé echo 'Nom du blog de BN : '.$blogDeBN->nom.'<br />';
Pour appeler un attribut à l’intérieur d’une méthode, on utilisera $this->attribut
, affin de préciser que l’on parle de l’attribut que l’on utilise actuellement. (et non de celui d’un autre objet que l’on aurait pu instancier.
<?php class Blog { var $nom; var $description; var $url; function ajouter_billet() { echo 'Ceci est mon premier billet pour blog '.$this->nom.'.<br />'; } function ajouter_categorie() { echo 'Ceci est ma première catégorie pour blog '.$this->nom.'.<br />'; } } $blogDeBN = new Blog(); // On remplie les attributs $blogDeBN->nom = '30 minutes par jour'; $blogDeBN->description = '30 minutes par jour au coeur de l\'informatique.'; $blogDeBN->url = 'http://30minparjour.la-bnbox.fr'; // On peut les afficher echo 'Nom du blog : '.$blogDeBN->nom.'<br />'; // On utilise les méthodes $blogDeBN->ajouter_billet(); $blogDeBN->ajouter_categorie();
Je suis en pleine recherche d’un tutoriel ou d’un livre sur le PHP objet. Pour l’instant j’ai lu l’introduction à la POO sur le tutoriel de PHPCake du Site du Zéro, et je vais voir ce que donne les autres cours que j’ai pu trouver comme celui sur Developpez.com.