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

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

LA PORTEE DES VARIABLES PHP

Introduction à la portée en PHP

En PHP, nous pouvons déclarer des variables n’importe où dans notre script : au début du script, à l’intérieur de boucles, au sein de nos fonctions, etc.

Le problème étant que selon où l’on déclare une variable dans notre script, nous n’allons pas pouvoir utiliser cette variable dans tout notre script.

La « portée » d’une variable correspond à l’endroit où la variable va pouvoir être utilisée dans le script.

Le PHP dispose de trois espaces de portée différents :

  • L’espace global ;
  • L’espace local ;
  • L’espace statique (« static »).

L’espace global PHP

Pour faire très simple, retenez grosso modo que toute variable déclarée à l’extérieur d’une fonction en PHP appartient à l’espace global.

Les variables déclarées dans l’espace global ont une portée dans l'espace « global » : cela signifie qu’elle ne peuvent être utilisées qu’au sein de l’espace global.

Ainsi, une variable déclarée à l’extérieur d’une fonction ne va pas pouvoir être utilisée dans cette fonction. Faites bien attention à ce point de détail qui est différent du comportement d'autres langages comme le JavaScript par exemple.

Illustrons cela avec un exemple.

La portée des variables en PHP

Une variable globale ne peut être utilisée que dans l’espace global

Comme vous pouvez le voir, nous n’avons pas du tout accès à une variable déclarée dans l’espace global au sein d’une fonction.

Cela implique également qu’on peut tout à fait créer une autre variable $x dans notre espace local. Les variables $x globale et locale seront parfaitement différenciées.

Cependant, pour des raisons de lisibilité évidentes du code, il est déconseillé de déclarer deux variables différentes portant le même nom.

On peut déclarer deux variables de même nom dans deux espaces différents

Nos deux variables locale et globale sont bien différentes

L’espace PHP local

Lorsqu’on déclare une variable au sein d’une fonction, celle-ci appartient à l’espace défini par la fonction en question.

La variable ne peut alors être utilisée qu’au sein de la fonction dans laquelle elle a été déclarée.

Une nouvelle fois, illustrons cela avec un exemple :

Une variable déclarée localement en PHP ne peut être utilisée que dans la fonction où elle a été déclarée

On tente d’afficher une variable déclarée localement dans l’espace global de notre script PHP

Ici, on déclare notre variable $x dans l’espace local de notre fonction test(). On tente ensuite d’afficher $x à partir de notre espace global. Evidemment, ça ne fonctionne pas.

Accéder localement à des variables globales en PHP

Parfois, nous aimerions tout de même avoir accès à certaines variables déclarées globalement au sein d’une fonction.

Le PHP nous fournit pour cela le mot clef global, qui permet d’accéder localement à des variables déclarées globalement.

Faites néanmoins attention à ne pas abuser de ce mot clef qui sert finalement à contourner une règle PHP fixée pour apporter de la clarté à notre script.

Utilisation du mot clef global en PHP

On peut accéder localement à une variable globale grâce au mot clef global en PHP

Ici, on utilise $x au sein de notre fonction grâce au mot clef global. On multiplie la valeur contenue dans $x par deux.

Comme notre variable est au départ globale, on peut l’afficher à partir de l’espace global après avoir effectué des modifications dans l’espace local.

Le mot clef static et « l’espace statique » en PHP

Tout d’abord, vous devez savoir qu’une variable a une durée de vie limitée.

Ainsi, une variable déclarée dans l’espace global ne va « vivre » que durant la durée d’exécution du script. Une fois le script terminé, la variable est détruite et on ne peut donc plus accéder à sa valeur.

Dans le cas d’une variable déclarée localement, la durée de vie est encore plus courte puisque la variable ne va vivre que durant la durée de l’exécution de la fonction dans laquelle elle a été déclarée.

Dans certains scripts, nous aimerions pourtant pouvoir conserver la valeur d’une variable même après qu’on ait fini d’exécuter une fonction.

Pour cela, nous allons utiliser le mot clef static qui va créer un espace statique au sein duquel les valeurs de nos variables vont être conservées (durant le temps de l’exécution du script complet).

Prenons un exemple simple pour bien comprendre la puissance et l’intérêt de ce mot clef.

Utilisation du mot clef static en PHP

On peut créer un espace statique en PHP pour conserver les valeurs de variables locales

Commençons par analyser le comportement de notre première fonction.

Dans celle-ci, on commence par déclarer et par instancier une variable $x. Ensuite, on affiche la valeur de $x puis on incrémente cette valeur.

Que se passe t-il lorsqu’on appelle cette fonction ? Lors du premier appel, la fonction affiche bien $x vaut 0 comme attendu.

Cependant, lors des appels suivants, la fonction affiche toujours $x vaut 0.

Cela est une nouvelle fois dû à la durée de vie des variables locales. En effet, lors du premier appel, la fonction s’exécute et renvoie la valeur de $x puis l’incrémente.

Cependant, dès que la fonction a fini de s’exécuter, la valeur de $x est effacée. Ainsi, lorsqu’on appelle une deuxième fois compte1(), la variable $x est déclarée et initialisée à nouveau.

Dans notre fonction compte2(), en revanche, on utilise le mot clef static qui empêche cela.

En effet, grâce au mot clef static, la valeur de notre variable locale $z est conservée même après l’exécution de la fonction. Ainsi, lorsqu’on appelle pour la deuxième fois compte2(), $z possède la valeur 1 avant son affichage et etc.

Conclusion sur la portée des variables

Je conçois tout à fait que chaque nouveau chapitre apporte beaucoup de nouvelles informations pour une personne découvrant le PHP et que, parfois, vous puissiez douter de l’importance de certaines informations.

Pourtant, croyez moi : tout ce que nous avons fait jusqu’à présent est véritablement essentiel afin d’obtenir une bonne maitrise du PHP.

De même, connaître la durée de vie et la portée d’une variable va être primordial pour construire un script fonctionnel. N’hésitez donc pas à prendre votre temps entre chaque chapitre pour bien comprendre chaque nouvelle notion et subtilité du PHP. Dans tous les cas, on n’apprend pas à coder en une semaine.

Chapitre précédent

Chapitre suivant