Apprendre à coder sur pierre-giraud.com

DES COURS COMPLETS ET GRATUITS POUR TOUS

SOMMAIRE

Introduction

  1. Présentation du cours
  2. Introduction au PHP
  3. Mettre en place un env. de travail

Les bases en PHP

  1. Syntaxe de base du PHP
  2. Premières instructions PHP
  3. Introduction aux variables PHP
  4. Types de valeurs et concaténation
  5. Opérations sur les variables
  6. Conditions et opérateurs de comparaison
  7. Les conditions if, if...else et if... elseif... else
  8. Utilisation avancée des conditions
  9. Structures ternaires et switch
  10. Les boucles PHP
  11. Découverte des fonctions
  12. La portée des variables
  13. Les constantes PHP
  14. Les variables tableaux PHP
  15. Tableaux associatifs
  16. Tableaux multidimensionnels
  17. Test n°1

Gestion des dates en PHP

  1. Le timestamp
  2. Obtenir et formater une date
  3. Tester la validité d'une date
  4. Test n°2

Opérations sur les fichiers en PHP

  1. Lire, ouvrir, fermer un fichier
  2. Parcourir et lire un fichier par partie
  3. Créer un fichier et écrire dedans
  4. Ecrire dans un fichier
  5. Les instructions include et require
  6. Test n°3

Les variables superglobales

  1. Découverte des variables superglobales
  2. Les cookies
  3. Les sessions
  4. Test n°4

Les expressions régulières et PHP

  1. Découverte des regex
  2. Les fonctions PHP PCRE
  3. Quantifieurs et options
  4. Classes de caractères
  5. Test n°5

L'orienté objet en PHP

  1. Classes, instances et objets
  2. Propriétés et méthodes
  3. Extension de classe et héritage
  4. Le principe d'encapsulation
  5. La méthode constructeur
  6. L'opérateur de résolution de portée et la surcharge
  7. Constantes, méthodes et propriétés statiques
  8. Les classes et méthodes abstraites
  9. Les interfaces
  10. Les méthodes magiques
  11. Le chainage de méthodes
  12. Test n°6

Notions avancées en POO

  1. Le typage explicite
  2. Les traits
  3. Les closures et les classes anonymes
  4. L'auto-chargement des classes
  5. Le mot clef final
  6. Résolution statique à la volée
  7. Parcourir des objets
  8. Le clonage d'objets
  9. Comparaison d'objets
  10. Test n°7

Filtres, erreurs et exceptions

  1. Introduction aux filtres
  2. Utilisation pratique des filtres
  3. Gérer les erreurs en PHP
  4. Gérer les exceptions en PHP

POO PHP : PROPRIETES ET METHODES

Propriétés : définition et utilisation

Dans le chapitre précédent, nous avons créé une classe Humain qui ne contenait pas de code.

Nous avons également dit qu’une classe servait de plan pour créer des objets. Vous pouvez donc en déduire qu’une classe vide ne sert pas à grand-chose.

Nous allons donc maintenant rendre notre classe plus fonctionnelle en lui ajoutant des éléments.

On va déjà pouvoir créer des variables à l’intérieur de nos classes. Les variables créées dans les classes sont appelées des propriétés, afin de bien les différencier des variables « classiques » créées en dehors des classes.

Une propriété, c’est donc tout simplement une variable créée dans une classe.

Reprenons notre classe Humain et ajoutons une propriété $nom par exemple.

On ajoute une propriété dans une classe

Comme vous pouvez le voir, on déclare une propriété exactement de la même façon qu’une variable classique, en utilisant le signe $.

Le mot clef public signifie ici qu’on va pouvoir accès à cette propriété depuis l’intérieur et l’extérieur de notre classe. Nous reparlerons de cela un peu plus tard, n’y prêtez pas attention pour le moment.

Vous pouvez remarquer que nous ne stockons pas de valeur dans notre propriété de classe : chaque objet créé à partir d’une instance de notre classe implémentera sa propre valeur par la suite. Il n’est toutefois pas interdit d’initialiser une propriété dans la classe, c’est-à-dire lui attribuer une valeur de référence à la condition que ce soit une valeur constante (elle doit pouvoir être évaluée pendant la compilation du code et ne doit pas dépendre d'autres facteurs déterminés lors de l'exécution du code).

Dans notre cas, nous allons créer deux objets $pierre et $victor à partir de notre classe Humain et définir une valeur à stocker dans $nom propre à chaque objet.

Création d'objets à partir d'une classe

Ici, vous pouvez à nouveau observer une syntaxe que nous ne connaissons pas encore avec ->.

On va essayer de comprendre ensemble tout ce qu’il se passe ici.

Tout d’abord, pour accéder à une propriété d’une classe, il faut utiliser un objet contenant une instance de la classe en question. C’est pour cela que nous utilisons $pierre et $victor.

Ensuite, nous utilisons ce fameux opérateur -> appelé opérateur objet pour signifier que l’on souhaite accéder à quelque chose à l’intérieur de notre classe. Notez qu’on ne précise pas de signe $ avant le nom de la propriété qu’on souhaite récupérer dans ce cas.

Ici, on va tout à fait pouvoir accéder à notre propriété depuis notre objet (c’est-à-dire depuis l’extérieur de notre classe) car nous l’avons définie avec le mot clef public. Notez cependant qu’il est généralement considéré comme une mauvaise pratique de laisser des propriétés de classes accessibles directement depuis l’extérieur de la classe et de mettre à jour leur valeur comme cela car ça peut poser des problèmes de sécurité dans le script.

Pour manipuler des propriétés depuis l’extérieur de la classe, nous allons plutôt créer des fonctions de classe dédiées afin que personne ne puisse directement manipuler nos propriétés et pour protéger notre script.

Méthodes : définition et utilisation

Nous allons également pouvoir déclarer des fonctions à l’intérieur de nos classes.

Les fonctions définies à l’intérieur d’une classe sont appelées des méthodes. Là encore, nous utilisons un nom différent pour bien les différencier des fonctions créées en dehors des classes.

Dans notre classe Humain, nous allons par exemple pouvoir créer deux méthodes qu’on va appeler setNom() et getNom().

Le rôle de setNom() va être de définir ou de modifier la valeur de la propriété $nom relative à une instance de notre classe.

Le rôle de getNom() va simplement être de récupérer la valeur contenue dans la propriété $nom pour un objet en particulier.

Profitez-en pour noter que les méthodes qui servent à définir / modifier / mettre à jour une valeur sont appelées des setters. Généralement, on fera commencer leur nom par set afin de bien les identifier comme on l’a fait pour notre méthode setNom(). De même, les méthodes qui servent à récupérer des valeurs sont appelées des getters et on fera commencer leur nom par get. Ces notations sont des conventions qui ont pour but de clarifier les scripts et de simplifier la vie des développeurs.

On va donc modifier le code à l’intérieur de notre classe comme ceci :

Création de méthodes à l'intérieur d'une classe en POO PHP

Il y a beaucoup de nouvelles choses dans ce code que nous allons décortiquer ligne par ligne.

Tout d’abord, vous pouvez remarquer qu’on a modifié l’accessibilité de notre propriété $nom. En effet, nous avons utilisé le mot clef private à la place de public qui signifie que notre propriété n'est désormais accessible que depuis l’intérieur de la classe.

En revanche, nous avons utilisé le mot clef public devant nos deux méthodes afin de pouvoir les utiliser depuis l’extérieur de la classe.

Ensuite, vous devriez également avoir remarqué qu’on utilise un mot nouveau pour vous dans ces deux méthodes : le mot clef $this. Ce mot clef est appelé pseudo-variable et sert à faire référence à l’objet couramment utilisé.

Prenons un exemple concret afin que vous compreniez bien ce point important. Pour cela, retournons dans notre fichier de script principal et modifions quelques lignes comme cela :

Utilisation des méthodes de classe à partir d'un objet en POO PHP

Nos méthodes de classe s'exécutent bien

Ici, on inclut notre fichier de classe puis on instancie ensuite notre classe et on stocke cette instance dans un objet qu’on appelle $pierre.

On va pouvoir avoir accès à nos deux méthodes setNom() et getNom() définies dans notre classe depuis notre objet puisqu’on a utilisé le mot clef public lorsqu’on les a déclarées.

On commence donc par utiliser notre méthode setNom() pour définir une valeur à stocker dans notre propriété $nom.

Pour cela, on utilise à nouveau l’opérateur objet -> pour accéder à notre méthode depuis notre objet.

Comme vous pouvez le constater, la méthode setNom() a besoin d’un argument pour fonctionner, argument qui va correspondre dans le cas présent à la valeur qu’on souhaite stocker dans la propriété $nom de notre instance.

Comme je vous l’ai dit plus haut, la pseudo-variable $this dans le code de notre méthode sert à faire référence à l’objet couramment utilisé.

Dans le cas présent, la ligne $this->nom = $nouveauNom signifie littéralement que l’on souhaite stocker dans la propriété $nom définie dans notre classe le contenu de $nouveauNom (c’est-à-dire l’argument passé) POUR notre objet $pierre. La pseudo-variable $this fait référence dans ce cas à $pierre.

De la même façon, on retourne le contenu de $nom pour notre objet $pierre grâce à getNom().

Créons immédiatement un deuxième objet afin de bien illustrer une nouvelle fois le fait que $this sert de référence à l’objet couramment utilisé.

Création de deux objets et utilisation des méthodes de notre classe en POO PHP

Nos deux objets sont bien uniques

Comme vous pouvez le voir, on a pu stocker une valeur différente dans $nom pour chacun de nos deux objets.

Chapitre précédent

Chapitre suivant