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

LES INTERFACES EN POO PHP

Définition et création d’une interface

Les interfaces sont relativement similaires aux classes abstraites au sens où elles vont également nous permettre de créer des plans pour la création de futures classes. Cependant, il existe quelques différences entre les classes abstraites et les interfaces que nous allons souligner dans ce nouveau chapitre.

Nous allons créer nos interfaces dans des fichiers séparés (une interface = un nouveau fichier), tout comme on le faisait déjà pour nos classes. Par convention, on appellera nos fichiers d’interface monFichier.interface.php.

Créons donc immédiatement une interface dans un nouveau fichier. On va déclarer une nouvelle interface avec le mot clef interface. Dans mon cas, je vais créer une interface Humain et appeler mon fichier humain.interface.php. Je vais placer ce fichier dans un sous-dossier nommé « interfaces ».

Déclaration d'une nouvelle interface en POO PHP

Commencez par retenir qu’une interface ne peut pas contenir de propriétés, mais peut contenir des constantes et des méthodes. Cependant, les méthodes déclarées dans les interfaces ne doivent pas contenir de code à exécuter (pas de body) exactement comme dans le cas des méthodes abstraites. De plus, toutes les méthodes d’une interface doivent être définies avec le mot clef public.

Notez également que les constantes d’interface ne peuvent pas être surchargés par une classe ou par une autre interface qui en hériterait.

Utiliser une interface

Nous venons de créer notre interface. L’intérêt va maintenant être de l’utiliser pour définir des classes.

Pour utiliser une interface, nous n’allons pas utiliser le mot clef extends comme on en a l’habitude mais plutôt le mot clef implements.

Nous n’utiliserons le mot clef extends que si nous souhaitons étendre notre interface avec une autre interface.

De la même façon qu’avec les classes et méthodes abstraites, toutes les méthodes définies dans une interface doivent être implémentées dans les classes l’utilisant.

Notez également qu’on ne peut bien évidemment pas instancier directement une interface ; on va donc instancier les classes qui implémentent notre interface.

Définition d'une méthode au sein d'une interface en POO PHP

Ici donc, on définit une méthode setAdresse() dans notre interface Humain. Rappelez-vous qu’on ne déclare que la signature d'une méthode dans une interface et qu’on ne peut pas non plus définir de propriété dans une interface.

Implémentation d'une interface et d'une méthode d'inteface dans une classe en POO PHP

Ensuite, on implémente notre méthode dans notre classe Moi qui implémente notre interface. Ici, je me suis contenté de récupérer les mêmes méthodes que dans les chapitres précédents pour plus de simplicité.

Notez qu’on n’a pas défini de constructeur ici pour notre classe car il n’était pas nécessaire pour notre exemple.

Création d'un objet en instanciant une classe issue d'une interface en POO PHP

Finalement, on inclut bien notre interface et notre classe dans notre script principal (attention : ici j’ai bien stocké mon fichier d’interface dans un sous-dossier « interfaces » et mon fichier de classe dans mon sous-dossier « classes ».

On a pu créer une classe à partir d'une interface en programmation orientée objet PHP

Comme vous pouvez le constater, le résultat s’affiche bien.

Interface ou classe abstraite : points communs et différences

L’intérêt des interfaces est qu’on va pouvoir les utiliser comme templates / plans pour créer des classes qui nécessitent une certaine logique ou structure particulière dans leur code.

Les interfaces et les classes abstraites servent le même objectif : créer des plans de structure pour des classes qui en ont besoin. Il existe cependant certaines différences mineures entre les interfaces et les classes abstraites.

Tout d’abord, une interface ne peut pas contenir de propriété tandis qu’on peut tout à fait en définir dans une classe abstraite.

Ensuite, avec les interfaces toutes les méthodes sont abstraites au sens où l’on doit définir leur code dans les classes qui implémentent notre interface, à la différence des classes abstraites qui peuvent contenir des méthodes classiques.

Au niveau des méthodes à nouveau, on peut définir des méthodes avec les mots clefs public, private ou protected dans les classes abstraites tandis que toutes les méthodes d’une interface doivent impérativement être définies avec le mot clef public.

Finalement, une classe ne peut étendre qu’une classe abstraire tandis qu’elle peut implémenter une infinité d’interfaces différentes (en séparant les différentes interfaces implémentées par une virgule).

Notez bien que les classes abstraites et les interfaces ne sont pas souvent utilisées car elles répondent à des besoins très précis. Cependant, il est bon de les connaitre et de savoir comment elles fonctionnent dans le cas où vous travailleriez sur un code utilisant ces notations ou dans le cadre d’un projet avec ce type de besoins précis justement.

Chapitre précédent

Chapitre suivant