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 : LE PRINCIPE D’ENCAPSULATION

Le principe d’encapsulation

L’encapsulation correspond tout simplement à la façon dont on définit la visibilité et l’accessibilité de nos propriétés et méthodes de classe.

L'encapsulation est, avec l'héritage, l'un des concepts fondamentaux de la programmation orientée objet PHP.

L’importance de l’encapsulation

Lorsque l’on crée une nouvelle classe, il faut toujours se demander quelles propriétés et méthodes vont devoir ou pouvoir être accessibles depuis l’extérieur de la classe.

En effet, parfois, nous aurons besoin d’avoir accès à des méthodes ou propriétés depuis l’extérieur d’une classe afin qu’un script ou programme fonctionne correctement.

A l’inverse, il nous faudra dans d’autre cas interdire l’accès à certaines propriétés ou méthodes depuis l’extérieur de la classe sous peine d’ouvrir notre script à de sérieux problèmes de vulnérabilité ou failles.

Par exemple, si vous créez un logiciel et que vous laissez la possibilité à des développeurs externes d’étendre vos classes (comme c’est le cas de PrestaShop), il faudra vous demander à chaque fois si ces développeurs vont avoir besoin d’accéder à telle ou telle propriété ou méthode et jauger les problèmes potentiels que ça peut poser.

Les différents niveaux d’accessibilité des propriétés et méthodes en POO PHP

On va pouvoir définir trois niveaux d’accessibilité différents pour nos propriétés et méthodes grâce aux trois mots clefs suivants :

  • public ;
  • private ;
  • protected.

Le mot clef public signifie qu’on va pouvoir accéder à la propriété ou méthode définie en tant que telle depuis l’intérieur et depuis l’extérieur de la classe.

Le mot clef private devant une propriété ou une méthode signifie que cette propriété ou méthode n’est accessible qu’à l’intérieur de la classe en soi : la propriété ou méthode ne sera accessible ni depuis une classe fille, ni depuis une instance de la classe.

Finalement, le mot clef protected restreint l’accès à une méthode ou propriété à la classe en soi ainsi qu’aux classes filles étendant cette classe.

Quel niveau d’accessibilité définir pour nos propriétés et méthodes en POO PHP ?

Pour savoir quel niveau d’accessibilité définir pour chaque nouvelle propriété ou méthode créée, il suffit de se poser une simple question : quel élément dans mon script a besoin d'utiliser cette propriété ou méthode ?

Si par exemple vous créez une méthode dans votre classe servant à définir ou mettre à jour une valeur, vous voudrez généralement l’utiliser avec chaque nouvelle instance de classe créée et il faudra donc la définir comme public.

De manière générale, nous protégerons également nos propriétés en empêchant un accès direct depuis une instance de notre classe pour des raisons de sécurité. Ainsi, nous allons bien souvent créer des méthodes pour manipuler nos propriétés et définirons donc nos propriétés avec private ou protected.

Reprenons notre exemple de la leçon précédente avec nos deux fichiers de classes humain.class.php et francais.class.php pour avoir un exemple concret.

Les différents niveaux d'accessibilité en POO PHP

On peut définir nos propriétés et méthodes en POO PHP comme public, protected ou private

Ici, vous remarquez que toutes nos méthodes sont définies comme étant public car elles ont vocation à être utilisées depuis des instances créées à partir de nos classes.

En revanche, vous remarquez que nos deux propriétés $nom et $postal sont définies respectivement comme protected et private.

En effet, j’ai besoin d’avoir accès à ma propriété $nom définies dans ma classe Humain depuis la classe fille Francais pour que la méthode setNom() redéfinie dans celle-ci fonctionne.

En revanche, je peux définir ma propriété $postal comme private puisque personne n’a besoin d’y accéder depuis l’extérieur de notre classe Francais.

Notez que si vous tentez d’accéder à une propriété ou méthode private depuis l’extérieur de la classe, le PHP renverra une erreur. Même chose lorsqu’on tente d’accéder à une propriété ou méthode définie avec protected depuis une instance.

L’encapsulation en bref

L’encapsulation est un moyen de définir qui peut accéder et utiliser les différentes propriétés et méthodes définies dans une classe.

Rendre certaines méthodes et particulièrement propriétés inaccessibles depuis l’extérieur d’une classe sert à protéger notre code d’erreurs ainsi que de problèmes de sécurité potentiels.

A l’inverse, interdire l’accès à certaines méthodes ou propriétés depuis l’extérieur d’une classe peut empêcher certains scripts de s’exécuter correctement.

Chapitre précédent

Chapitre suivant