Les variables, tableaux, fonctions et manipulations de chaînes en PHP

En PHP comme dans tout autre langage, il faut savoir manipuler les variables, tableaux et fonction pour arriver à nos fins. Voici donc les grandes lignes de ces grands concepts de programmation.

▼Publicité

Les variables

Les variables en PHP portent toujours un nom débutant par $ et sont sensibles à la casse.

Déclaration

Alors que plusieurs langages exigent que chaque variable soit déclarée, un programmeur PHP peut assigner une valeur à une variable non déclarée.

Ex :  // la variable $nom n'a pas été déclarée. PHP comprend qu'il s'agit d'une variable texte

$nom = 'Axelle';

Assignation vs comparaison

L'opérateur = permet d'assigner une valeur à une variable. Attention de ne pas le confondre à l'opérateur == qui permet de comparer deux valeurs.

Ex : if ( $valeur == 30 ) {

...

}

Attention : les instructions SQL utilisées avec PHP, elles, devront utiliser le signe = pour comparer deux valeurs.

Ex : $requete = "SELECT menu_url,menu_titre FROM menu WHERE menu_parentid = -1";

Dans certains cas, l'opérateur === devra être utilisé pour comparer des valeurs. Cet opérateur permet de s'assurer que les variables comparées contiennent la même valeur et le même type. Ceci sera utile, par exemple, pour différencier une fonction qui retourne parfois a valeur booléenne FALSE et parfois le chiffre 0. Puisque le chiffre 0 peut également représenter la valeur FALSE, la triple égalité pourra différencier les deux cas.

Ex : $position = strpos( $titre, 'exercice' );

// si position pas été trouvée. Donc, si la position est 0, n'entrera pas dans le if

if ( $position === FALSE ) {

...

}

Les variables d'environnement

Le langage PHP contient une série de variables prédéfinies, aussi appelées variables d'environnement, que vous pouvez utiliser dans vos programmes.

$_SERVER

Cette variable est en fait un tableau. Elle contient un certain nombre d'éléments prédéfinis.

En voici quelques-uns :

  • $_SERVER['PHP_SELF'] : indique l'URL de la page affichée, incluant les paramètres s'il y a lieu.Ex : /monprojet/index.php?id=36
  • $_SERVER['SCRIPT_NAME'] : indique l'URL de la page affichée, sans les paramètres.Ex : /monprojet/index.php
  • $_SERVER['HTTP_USER_AGENT'] : donne des informations sur le navigateur utilisé.Sur Google Chrome : Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3Sur Firefox : Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 GTB7.1 ( .NET CLR 3.5.30729; .NET4.0E)

Les superglobales

Une variable superglobale est une variable définie par PHP et qui est disponible partout dans le programme. $_SERVER est une des variables superglobale de PHP. Il en existe d'autres que vous utiliserez assurément dans vos programmes.

$_POST

La variable $_POST permet de retrouver la valeur entrée dans un élément de formulaire.

Ex : // retrouver la valeur entrée dans une balise <input type="text" name="nomfamille" />

$nomfamille = $_POST['nomfamille'];

$_GET

Permet de retrouver les valeurs reçues en paramètre dans l'URL

Ex : // retrouver la valeur du paramètre nommé id dans un URL du genre http://mondomaine.com/index.php?id=3

$id = $_GET['id'];

$_SESSION

Puisque le Web est un monde sans état, il fallait trouver un moyen de retenir certaines informations lorsque l'internaute change de page. C'est le rôle des variables de session, toutes rassemblées dans la variable superglobale $_SESSION.

Ex : // retrouver la valeur retenue dans une variable de session nommée login

$login= $_SESSION['login'];

Les tableaux

Un tableau est une variable spéciale qui permet de stocker plusieurs valeurs.

Attention : ne pas confondre les tableaux PHP et les tableaux HTML. Les tableaux PHP sont des variables donc tout se passe en mémoire et est invisible. Les tableaux HTML sont des balises permettant d'afficher des informations en lignes et en colonnes.

Ex : On pourra avoir un tableau nommé $etape qui contiendra les valeurs "Déclaration", "Initialisation" et "Affichage".

En PHP, les tableaux sont dynamiques c'est-à-dire qu'ils peuvent changer de taille selon les besoins. Le même tableau pourra donc contenir 3 éléments ou 15 éléments si nécessaire.

Déclaration

Contrairement aux autres variables PHP, il est nécessaire de déclarer les tableaux.

Ex : $etape = array();

Initialisation

Il est possible d'initialiser le tableau dès la déclaration.

Ex : $etape = array( "Déclaration", "Initialisation", "Affichage" );

Il est également possible d'initialiser un tableau après sa déclaration.

Ex : $etape[0] = "Déclaration";

Si vous désirez ajouter un élément à la fin du tableau sans avoir à retrouver le numéro du dernier élément, vous pouvez simplement ouvrir et refermer les crochets carrés.

Ex : $etape[] = "Initialisation";

$etape[] = "Affichage";

Affichage

Pour afficher un élément du tableau, vous devez simplement le faire suivre par son numéro d'élément. Attention : le premier élément d'un tableau PHP porte l'indice 0.

Ex : echo $etape[0];     // affiche Déclaration

Tableau associatif

Il est possible d'utiliser un nom plutôt qu'un indice pour identifier chaque élément. À ce moment, vous devrez changer de syntaxe lorsque vous initialisez le tableau.

Ex : $configuration = array( 'usager' => 'toto', 'langue' => 'fr', 'position_menu' => 'gauche' );

Pour ajouter un élément ou modifier un élément existant, il faudra toujours travailler avec le nom associatif.

Ex : $configuration['langue'] = 'en';

$configuration['position_menu'] = 'gauche';

Les fonctions

Fonctions préprogrammées

Le langage PHP met à la disposition des programmeurs une foule de fonctions préprogrammées. Par exemple, la fonction explode() permet de séparer une chaîne de caractères en différentes sous-chaînes.

$partiesUrl = explode( "/", $_SERVER['SCRIPT_NAME'] );

L'appel d'une fonction est toujours suivi de parenthèses. Selon la fonction, on fournira différents paramètres en les séparant par une virgule.

Il ne faut pas oublier le point-virgule qui doit terminer toute instruction PHP.

Pour obtenir une liste des fonctions PHP préprogrammées :

« PHP Function List ». PHP official site. http://www.php.net/quickref.php

Fonctions définies par l'usager (UDF : User Defined Functions)

Afin d'optimiser l'utilisation de votre code, vous pouvez créer vos propres fonctions PHP.

On créera des fonctions pour deux principales raisons :

  • Le même code doit être exécuté à plusieurs endroits dans le programme (principe DRY : Do Not Repeat Yourself).
  • Le code devient plus facile à comprendre si une partie du code est placé dans une fonction disticte (principe KISS : Keep It Simple, Stupid !).

Lorsque vous définissez vos propres fonctions, vous devez d'abord définir la fonction puis faire l'appel de la fonction. Tant que la fonction n'est pas appelée, le code ne sera pas exécuté.

Définition de la fonction

Souvent, on placera nos fonctions dans une bibliothèque de fonctions, c'est-à-dire un fichier PHP qui ne contient que des fonctions. On différenciera les fonctions qui peuvent être utilisées par différents sites Web de celles qui sont propres à un seul site Web.

  • Les fonctions pouvant être utilisées par plusieurs sites Web seront placées dans la bibliothèque fonctionsgenerales.php qui sera placée en dehors du dossier du site Web.
  • Les fonctions propres à un site Web seront placées dans une bibliothèque propre à ce site Web. On placera ce fichier dans le dossier include sous le dossier du site Web.
  • Les fonctions n'étant utilisées que dans une seule page Web pourront être définies directement dans le fichier .php de cette page Web.

Pour définir la fonction, on débutera par le mot-clé function. Entre parenthèses, on placera les paramètres attendus (voir la section sur les paramètres). Tout le code de la fonction sera placé entre accolades.

Ex : function afficherMenu() {

...

}

Appel de la fonction

Avant de pouvoir faire appel à la fonction, il faut s'assurer que la page Web a accès à la bibliothèque de fonctions en utilisant la fonction require_once().

Lorsqu'on fait appel à une fonction, PHP exécute le code de cette fonction comme s'il avait été tapé directement là où est l'appel. L'appel consiste à écrire le nom de la fonction suivi de parenthèses puis d'un point-virgule.

Ex : afficherMenu();

Commentaire standard à ajouter en haut de chaque fonction

Afin d'assurer que d'autres programmeurs sauront bien utiliser vos fonctions, il importe de bien les commenter. Chaque fonction devra débuter par un commentaire standard comme suit :

// ***********************************************************
// fonction authentifier
// description : vérifie si l'usager est authentifié
// paramètres : code d'usager, mot de passe crypté avec sha1()
// retour : true si code d'usager et mot de passe valides, false si non valides
// utilisation : if !authentifier('$usager, $passecrypte) { /* affiche le formulaire... */ }
// suppositions critiques : le formulaire doit avoir un champ nommé usager et un champ nommé passe
// le mot de passe doit être crypté dans la BD à l'aide de sha1()
// les variables de session usager et nomusager seront initialisées si authentification fonctionne
// ***********************************************************

Portée des variables définies dans les fonctions

Les variables définies dans les fonctions n'existent qu'à l'intérieur de cette fonction. Elles commencent à exister la première fois qu'elles sont utilisées et cessent d'exister à l'accolade de fin de fonction.

Les paramètres

Les paramètres permettent d'utiliser le code d'une fonction dans un contexte légèrement différent. Par exemple, une fonction qui affiche un sous-menu pourra recevoir en paramètre le code du menu auquel le sous-menu est rattaché.

Dans la définition de la fonction, on précisera le nom de chaque paramètre entre les parenthèses. Comme les variables PHP ne sont pas typées, il n'y a pas lieu de préciser leur type comme c'est le cas dans les autres langages de programmation.

Ex : function afficherSousMenu( $parent_id ) {

...

}

Il est possible de donner une valeur par défaut à un paramètre en faisant suivre son nom par un signe d'égalité puis de la valeur par défaut.

Ex : function afficherSousMenu( $parent_id=1 ) {

...

}

Lors de l'appel de la fonction, on placera entre parenthèses la valeur que le paramètre doit prendre.Cette valeur peut être un nombre, du texte, une variable, etc.

IL N'EST PAS NÉCESSAIRE QUE LA VARIABLE PASSÉE EN PARAMÈTRE PORTE LE MÊME NOM QUE CELUI PRÉCISÉ DANS LA DÉFINITION DE LA FONCTION.

Ex : afficherSousMenu( 3 );

ou

affichersousMenu( $enreg[0] );

Il est obligatoire de passer une valeur pour chaque paramètre sauf lorsque les paramètres ont une valeur par défaut.

Les valeurs de retour

Grâce aux valeurs de retour, une fonction peut transmettre un résultat au programme appelant.

La valeur de retour peut être le résultat d'un calcul, l'état d'une opération, etc.

Dans la définition de la fonction en PHP, il n'y a pas lieu de déclarer le type de valeur de retour comme c'est le cas dans d'autres langages.

La fonction pourra retourner une valeur à l'aide de l'instruction return.

Ex : function authentifier( $usager_id, $mot_passe ) {

...

return $valide;

}

Lors de l'appel de la fonction, imaginez que PHP exécute le code de la fonction puis remplace l'appel par cette valeur.

Ex : // C'est comme si on disait if ($valide)

if ( authentifier( $code ,$passe ) ) {

...

}

L'appel de la fonction doit absolument "récupérer" la valeur de retour sans quoi, elle sera perdue dans les airs.

Ex : // La fonction fait la vérification mais la valeur de retour n'est pas récupérée. C'est donc inutile.

authentifier( $code, $passe );

// Cette formulation permet de récupérer la valeur de retour

$continuer = authentifier( $code, $passe );

Apostrophes, guillemets et concaténation

Concaténation

En PHP, pour concaténer deux chaînes de caractères, vous devez utiliser le point.

Ex : echo "Bonjour " . $nom;

Incrémentation

+= pour les nombres. C’est un raccourci pour faire qqch comme $a = $a + 4

.= : même chose mais pour les chaînes de caractères. Cet opérateur fait donc une concaténation au bout de la chaîne actuelle.

Ex : $balise .= "</ul>";

Apostrophes vs guillemets

En PHP, une chaîne de caractères peut être entourée d'apostrophes ou de guillemets.

Ex : $nom = 'Annie';

$nom = "Annie";

Chaîne contenant des apostrophes

Si une chaîne de caractères doit elle-même contenir des apostrophes, vous ne pouvez pas l'entourer elle-même d'apostrophes sans prendre de précaution supplémentaire.

Ex : $travail = 'Changement d'huile';     // génèrera un parse error

Deux solutions s'offrent à vous :

  • Entourer la chaîne de caractères de guillemets.

    Ex : $travail = "Changement d'huile";

  • Utiliser le caractère d'échappement ( \ ) pour que PHP n'interprète pas l'apostrophe comme indiquant la fin de la chaîne.

    Ex : $travail = 'Changement d\'huile';

Chaîne contenant une partie variable

Si la chaîne est formée d'une partie de texte et d'une partie découlant d'une variable, PHP saura remplacer le contenu de la variable sans aucun artifice si la chaîne est entourée de guillemets.

Ex : $nom = "Annie";

$salutation = "Bonjour $nom";

echo $salutation;      // affichera Bonjour Annie

Par contre, si la chaîne est entourée d'apostrophes, PHP ne saura pas interpréter le contenu d'une variable.

Ex : $nom = "Annie";

$salutation = 'Bonjour $nom';

echo $salutation;      // affichera Bonjour $nom

Si, pour une raison quelconque, vous devez absolument entourer la chaîne d'apostrophes et que cette chaîne contient une variable, vous devrez refermer la chaîne avant la variable et utiliser l'opérateur de concaténation.

Ex : $nom = "Annie";

$salutation = 'Bonjour ' .$nom;

echo $salutation;      // affichera Bonjour Annie

Accolades

Même si vous utilisez une chaîne entourée de guillemets, PHP aura des problèmes à interpréter une variable utilisant des crochets carrés, comme un élément de tableau associatif par exemple.

Pour permettre l'utilisation d'un élément de tableau associatif dans une chaîne, vous pouvez entourer l'élément de tableau avec des accolades.

Ex : $rendu = array();

...

$rendu['etape'] = "Étape 3";

$message = "Vous êtes rendu à {$rendu['etape']} ";

echo $message       // affichera Vous êtes rendu à Étape 3

Pour plus d'information

« Les procédures et fonctions utilisateurs ». Apprendre PHP. http://www.apprendre-php.com/tutoriels/tutoriel-11-les-procedures-et-fonctions-utilisateurs.html

« Les tableaux (array) ». Site du zéro. http://www.siteduzero.com/tutoriel-3-14479-les-tableaux-array.html

« Les tableaux (ou arrays) ». Apprendre PHP. http://www.apprendre-php.com/tutoriels/tutoriel-7-les-tableaux-ou-arrays.html

« Les Superglobales ». PHP. http://php.net/manual/fr/language.variables.superglobals.php

« Variables pré-définies ». Manuel PHP. http://www.manuelphp.com/php/reserved.variables.php

« Les variables ». PHP. http://ca2.php.net/manual/fr/language.variables.php

« Les types ». PHP. http://ca2.php.net/manual/fr/language.types.php

Merci de partager ! Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestShare on StumbleUponEmail this to someone
Catégories