Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Les 22 & 23 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. PHP et MySQL
  3. Écrire des fonctions et des classes PHP
Extrait - PHP et MySQL Maîtrisez le développement d'un site web dynamique et interactif (5e édition)
Extraits du livre
PHP et MySQL Maîtrisez le développement d'un site web dynamique et interactif (5e édition)
1 avis
Revenir à la page d'achat du livre

Écrire des fonctions et des classes PHP

Fonctions

1. Introduction

À l’instar des différents langages de développement, PHP offre la possibilité de définir ses propres fonctions (appelées fonctions « utilisateur ») avec tous les avantages associés (modularité, capitalisation…). Une fonction est un ensemble d’instructions identifiées par un nom, dont l’exécution retourne une valeur et dont l’appel peut être utilisé comme opérande dans une expression. Une procédure est un ensemble d’instructions identifiées par un nom qui peut être appelé comme une instruction.

2. Déclaration et appel

Le mot-clé function permet d’introduire la définition d’une fonction.

Syntaxe

function nom_fonction([paramètres]) [: type] { 
  instructions; 
} 

nom_fonction

Nom de la fonction (doit respecter les règles de nommage présentées dans le chapitre Introduction à PHP - Structure de base d’une page PHP). Ce nom n’est pas sensible à la casse (pour PHP les fonctions unefonction et UneFonction sont les mêmes).

paramètre

Paramètres éventuels de la fonction exprimés sous forme d’une liste de variables (cf. Paramètres) : $paramètre1, $paramètre2, ...

type

Déclaration du type de données retourné par la fonction. Valeurs possibles : int, float, string, bool, array, callable, iterable, object, mixed, void, never, un nom de classe ou d’interface (cf. dans ce chapitre la section Classes), une union de types, ou une intersection de types. Le nom du type peut être précédé d’un point d’interrogation (?) qui indique que la fonction peut retourner une valeur NULL, sauf pour les types suivants : void, never, mixed (déjà...

Classes

1. Concept

PHP propose des fonctionnalités classiques de programmation orientée objet :

  • Définition de classe.

  • Utilisation de méthodes constructeur et destructeur.

  • Notions de propriété ou de méthode publique, privée, protégée.

  • Héritage.

  • Notions de classe ou méthode abstraite, de classe ou méthode finale, d’interface, de propriété ou méthode statique (de classe).

  • Exceptions.

  • Attributs (similaire au concept d’annotation en Java ou de décorateurs en Python ou en JavaScript, apparus en version 8, non présentés dans cet ouvrage)

Une classe est un type composite regroupant des variables (appelées propriétés de la classe) et des fonctions (appelées méthodes de la classe). En soi, une classe ne contient pas de données ; c’est juste un modèle, une définition.

À partir de la classe, il est possible de définir ("instancier") des objets qui ont la structure de la classe et qui, eux, contiennent des données.

Dans cette partie, nous allons présenter les fonctionnalités de base les plus couramment utilisées : c’est une introduction pratique aux fonctionnalités objet de PHP. Pour plus d’informations, reportez-vous à la documentation de PHP.

2. Définir une classe

Le mot-clé class permet d’introduire la définition d’une classe.

Syntaxe

class nom_classe { 
  // définition des propriétés 
  [ 
  public | private | protected [type [readonly]] $propriété [= expression]; 
  ... 
  ] 
  // définition des méthodes 
  [ 
  [public | private | protected] function méthode() { ...

Espaces de noms

Les espaces de noms (namespace en anglais) permettent de résoudre deux problèmes fréquemment rencontrés lors de l’utilisation de classes ou de bibliothèques de fonctions :

  • utilisation d’un même nom (classe, fonction, constante) dans deux bibliothèques ;

  • manipulation de noms particulièrement longs qui rendent le code pénible à écrire.

Un espace de noms est déclaré avec le mot-clé namespace au tout début d’un fichier, avant tout autre code, à l’exception de l’instruction declare qui est autorisée avant (sinon, une erreur fatale se produit).

Exemple

<?php 
// Définition de l'espace de noms. 
namespace MaLibrairie; 
// Définition d'une constante. 
const UN = 1; 
// Définition d'une classe. 
class uneClasse { 
  /* 
  ... 
  */ 
} 
// Définition d'une fonction. 
function uneFonction() { 
  /* 
  ... 
  */ 
} 
?> 

Le même espace de noms peut être défini dans plusieurs fichiers, ce qui permet d’organiser le code dans plusieurs fichiers tout en le regroupant au sein d’un même espace de noms.

Plusieurs espaces de noms peuvent être définis dans un même fichier mais ce n’est pas une bonne pratique de codage.

Un espace de noms peut être défini avec des sous-niveaux en utilisant le séparateur antislash (\) : MaLibrairie\Sous\Niveau.

Par défaut, si aucun espace de noms n’est défini, toutes les définitions (classes, fonctions, constantes) sont placées dans l’espace de noms global.

La constante __NAMESPACE__ donne le nom de l’espace de noms courant (chaîne...