Variables et opérateurs en PHP, Study notes of Computer science

Ce document présente les différents types de variables et d'opérateurs utilisés en PHP. Il aborde les variables prédéfinies telles que $_SERVER, $_GET, $_POST et $_ENV, ainsi que les opérateurs arithmétiques, de comparaison, logiques et de chaînes de caractères. Le document explique également le fonctionnement des boucles foreach pour parcourir les tableaux et les objets, et fournit des exemples de code pour illustrer ces concepts. Cette ressource serait utile pour les étudiants en programmation PHP souhaitant approfondir leurs connaissances sur la manipulation des variables et des opérateurs dans ce langage.

Typology: Study notes

Pre 2010

Uploaded on 06/27/2024

mamadou-lamine-fofana
mamadou-lamine-fofana 🇸🇳

1 document

1 / 93

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Cours PHP
Versions 4.x et 5.x
Sébastien ROHAUT
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d

Partial preview of the text

Download Variables et opérateurs en PHP and more Study notes Computer science in PDF only on Docsity!

Cours PHP

Versions 4.x et 5.x

Sébastien ROHAUT

Table des matières

1 Introduction

1.1 Définition

PHP est un langage de script HTML exécuté du côté du serveur. Il veut dire « PHP : Hypertext Preprocessor ». Sa syntaxe est largement inspirée du langage C, de Java et de Perl, avec des améliorations spécifiques. Le but du langage est d'écrire rapidement des pages HTML dynamiques.

1.2 Historique

L'origine de PHP remonte à 1995 quand Rasmus Lerdorf a créé PHP/FI, une librairie de scripts Perl utilisés pour la publication de son CV sur son site personnel. Au fur et à mesure des évolutions, la librairie a été portée en C et agrémentée de nouvelles fonctionnalités pour créer des pages dynamiques simples pour le web et accéder à quelques sources de données. PHP/FI signifie Personal Home Page/Forms Interpreter. PHP/FI 2.0 sort en 1997, toujours développé par une seule personne. C'est le succès : 50000 sites (1% des noms de domaines) disent l'utiliser ou le supporter. Les contributeurs affluent. PHP 3.0 sort en juin 1998, c'est la première version développée conjointement par Rasmus Lerdorf, Andi Gutmans et Zeev Suraski et entièrement réécrite (les versions précédentes étaient trop lentes pour une application commerciale). Outre les performances, PHP 3 est modulaire et extensible, permettant de lui greffer des API supplémentaires, ce qui n'a pas manqué avec le support de nombreuses bases de données, de formats et de protocoles, une syntaxe plus cohérente et un support basique de l'objet. Il a été installé sur 10% du parc mondial des serveurs web avec des dizaines de milliers de développeurs et des centaines de milliers de sites. Le moteur de PHP 4 a été repensé afin d'en améliorer les performances pour des applications complexes et d'augmenter encore la modularité. Un nouveau moteur a vu le jour, appelé Zend Engine (contraction de Zeev et Andi). PHP 4 sort officiellement en mai 2000 et apporte des performances accrues, le supports de plusieurs serveurs web, les sessions, une sécurité accrue. C'est actuellement la dernière version stable (nous ne comptons pas les 4.1, 4.2 et 4.3). Et PHP 5? Actuellement en version beta, un cycle qui peut durer plusieurs mois, le but de PHP 5 est une amélioration des performances du moteur Zend (Zend Engine 2), un modèle objet étendu et très proche du C++, une compatibilité accrue avec de nouveaux standards et les anciens (RPC, XML, .NET, ...)

1.3 Utilisation pratique

  • Forums et Messageries
  • Commerce électronique
  • Banque / Comptes en ligne
  • Publication en ligne
  • Moteurs de recherche
  • Tout ce que vous voulez, (sauf les jeux) Résumons quelques sigles que nous allons utiliser par la suite.
  • HTML : Hypertext Markup Language
  • PHP : People Hate Perl... Non : PHP, Hypertext PreProcessor
  • SQL : Structured Query Language
  • MySQL : serveur de base de données et les outils pour y accéder
  • LAMP : Linux – Apache – MySQL – PHP, le quatuor gagnant des serveurs web.

1.4 Pages statiques vs pages dynamiques

Une page statique et une page écrite directement en HTML. Elle peut éventuellement incorporer du code Javascript lui donnant un semblant de 'dynamisme' mais uniquement du côté du navigateur et des données locales. Pour des traitements plus lourds nécessitant l'accès à une base de données, un formatage de tableau en fonction de résultats, une recherche poussée, du graphisme, il faut passer par des pages dynamiques et par un langage qui sera exécuté du côté du serveur : ASP sur les serveurs Microsoft/IIS, Perl, PHP...

1.5 Scripts CGI

PHP peut être utilisé comme langage CGI. Pour rappel, un script ou programme CGI est un programme comme un autre mais dont la sortie est dédiée à un navigateur, par exemple un programme shell, C ou Perl qui sort du HTML. PHP étant un langage script comme un autre on peut l'utiliser dans ce cas, mais ce n'est pas forcément le mieux.

1.6 Pages dynamiques et PHP

PHP est un langage Server Side ou côté serveur. Lors du chargement d'une page PHP, c'est le serveur qui va lire, interpréter et exécuter le code. Puis il renvoie le résultat, généralement sous la forme de code HTML au navigateur. Ainsi le navigateur et l'utilisateur ne voient jamais le véritable code PHP exécuté. De plus le résultat étant une page web classique en HTML, pas besoin d'installer sur le client des composants spécifiques (java, ...). Il n'y a donc pas de notion de vitesse d'exécution du côté du client, mais celle du serveur est prépondérante.

1.7 Pourquoi préférer PHP à d'autres langages comme ASP?

ASP n'est pas entièrement un langage puisque ASP veut dire Active Server Page. ASP dispose bien entendu de ses propres API mais qui peuvent être accessibles via un autre langage. Il s'agit d'utiliser un langage (quelconque) pour créer des pages dynamiques. Nativement disponible avec IIS sous Windows, il ne l'est pas par défaut avec les autres systèmes ou serveurs web comme Apache. Il existe cependant des modules de compatibilité ASP pour Apache comme Apache::ASP qui reprend les API ASP en les étendant et en programmation PERL. Sous Windows, le code ASP se fait généralement en VBScript ou en Jscript. C'est aussi possible sous Unix/Linux et Apache, mais il faut alors se tourner vers des solutions commerciales (Sun One ASP, Instant ASP, ...). Sous

APACHE PHP MySQL

Linux

tous les navigateurs supportant ce standard. Avec une bonne déclaration (entête HTML) les navigateurs IE6, Mozilla 1.5, Opera 7, Galeon, Konqueror, etc, sont compatibles avec ces standards. L'utilisation de balises propriétaires à un navigateur (blink par exemple) ou de vbscript (sous IE) est à proscrire. La dernière norme HTML valide est HTML 4.01 STRICT. XHTML qui à terme remplacera définitivement HTML est aussi bien supporté. La dernière norme CSS et la 2. Cependant dans ce cas préférez CSS-1 car seul Opera supporte CSS-2. Prenez l'habitude quand c'est possible de tester votre site sur deux ou trois navigateurs : IE6 car c'est le plus répandu, Opera car il est extrêmement respectueux des standards et Mozilla car c'est LE challenger et probablement remplaçant à terme de IE (qui n'aura plus d'évolution de version avant LongHorn).

2 Bases :Présentation

PHP est langage très souple prenant ses sources dans divers langages comme le C, le Perl, le C++. Il est donc possible d'avoir plusieurs styles de scripts (programmation classique dite procédurale ou programmation objet, ou programmation bordélique). Cette souplesse permet une très grande liberté, un peu comme en Perl. L'inconvénient est qu'on peut très vite obtenir du code illisible (bordélique), même si ça marche très bien. Prenez donc l'habitude de commenter votre code, de l'indenter et de ne placer qu'une instruction par ligne.

2.0.1 Syntaxe de base

2.1 Intégration à HTML

Une page php porte l'extension « .php ». Une page PHP peut être entièrement programmée en PHP ou mélangée avec du code html. PHP est un langage « Embedded HTML », c'est à dire qu'il apparaît à n'importe quel endroit de la page HTML. Pour ça on le place dans des balises particulières : . On peut aussi utiliser les balises . La première forme est préférable pour plus de simplicité et une compatibilité XHTML. On écrit donc une page HTML dans laquelle on intègre du code PHP.

Titre

Le code HTML généré sera le suivant

Titre

Hello World!

L'utilisation de balises pour l'intégration de code dans une page web est très souple et permet de jongler facilement avec du code PHP et du code HTML :

Ceci est vrai.

Ceci est faux.

3 Travailler avec des variables

3.1 Déclarer une variable

Une variable commence par un dollar « $ » suivi d'un nom de variable. Les variables ne sont pas typées au moment de leur création. Attention PHP est sensible à la casse : var et Var ne sont pas les mêmes variables! Voici les règles à respecter :

  • Une variable peut commencer par une lettre
  • Une variable peut commencer par un souligné (underscore) « _ »
  • Une variable ne doit pas commencer par un chiffre. // Déclaration et règles $var= 1 ; // $var est à 1 $Var= 2 ; // $ Var est à 2 $_toto='Salut'; // Ok $3petitscochons=5; // Invalide : commence par un chiffre Leur type dépend de leur valeur et de leur contexte d'utilisation. Mais on peut forcer (cast) ponctuellement une variable à un type de données, ce qui s'appelle le transtypage. De même comme le type de variable peut changer en fonction de son utilisation ou du contexte, PHP effectue automatiquement un transtypage, ce qui peut parfois fournir des résultats surprenants. On affecte une valeur à une variable avec le signe égal « = » avec ou sans espace avant ou après. // Déclaration et transtypage $var='2'; // Une chaîne 2 $var+= 1 ; // $var est maintenant un entier 3 $var=$var+0.3; // $var est maintenant un réel de type double 3. $var= 5 + "3 petits cochons"; // $var est un entier qui vaut 8 Par défaut les variables sont assignées par valeur : la valeur assignée à la variable est recopiée dans la variable. PHP peut aussi travailler par référence. Une variable peut donc référencer une autre variable. On dit alors que la variable devient un alias, ou pointe sur une autre variable. On assigne par référence en utilisant le signe « & » devant la variable assignée $var= 2 ; $ref=&$var; // $ref devient une référence de $var echo $ref; // affiche 2 $var= 3 ; echo $ref; // affiche 3 $ref= 4 ; echo $var; // affiche 4 Attention à la valeur constante NULL insensible à la casse. Affecter une valeur NULL à une variable signifie ne pas puis affecter de valeur.

3.2 Portée des variables

La portée d'une variable dépend du contexte. Une variable déclarée dans un script et hors d'une fonction est globale mais par défaut sa portée est limitée au script courant, ainsi qu'au code éventuellement inclus (include, require) et n'est pas accessible dans les fonctions ou d'autres scripts.

$a= 1 ; // globale par défaut function foo() { echo $a; // c'est une variable locale à la fonction : n'affiche rien } Pour accéder à une variable globale dans une fonction, il faut utiliser le mot-clé global. $a= 1 ; // globale par défaut $b= 2 ; // idem function foo() { global $a,$b; // on récupère les variables globales $b=$a+$b; } echo $b; // affiche 3 PHP accepte les variables statiques. Comme en C une variable statique ne perd pas sa valeur quand on sort d'une fonction. function test_static() { static $a=0; echo $a; // +1 à chaque passage dans la fonction $a++; }

3.3 Variables prédéfinies

PHP dispose d'un grand nombre de variables prédéfinies. Ces variables sont généralement de type scalaires ou des tableaux. Elles sont souvent de type superglobales, c'est à dire accessible depuis n'importe où sans notion de portée. Voici quelques tableaux prédéfinis (voir au point Tableaux pour comprendre leur utilisation).

  • $_GLOBALS : tableau des variables globales. La clé est le nom de la variable.
  • $_SERVER : variables fournies par le serveur web, par exemple 'SERVER_NAME'
  • $_GET : variables fournies par HTTP par la méthode GET (formulaires)
  • $_POST : idem mais pour la méthode POST
  • $_COOKIE : les variables fournies par un cookie
  • $_FILES : variables sur le téléchargement d'un fichier (upload)
  • $_ENV : accès aux variables d'environnement du serveur
  • $_SESSION : les variables de session (voir cours sur les sessions) Note : avant la version 4.2.0 de PHP, les variables passées par la méthode GET, POST (formulaires et URL) et ainsi de suite étaient automatiquement créées dans le script de destination. http://www.toto.fr/page.php?action=enr créait automatiquement la variable $action qui prenait la valeur 'enr'. créait dans la page cible (action du form) une variable $cache de valeur "toto". Ce n'est plus automatique depuis PHP 4.2.0. Il faut passer par les tableaux superglobaux ci-dessus. On peut cependant passer outre en modifiant la valeur register_globals dans le php.ini.

positif, ou supérieure s'il est négatif (conversion vers zéro). Pour la conversion depuis les chaînes, voir à ce type.

3.5.3 Virgule flottante

On parte ici des nombres réels, double ou float, c'est à dire les nombres à virgules. La virgule est spécifiée par le point «. ». La puissance de 10 s'exprime avec le « e » ou le « E ». $var=1.234; $var2=1.1e4; // 1.1 * 10^4 : 11000

3.5.4 Chaînes de caractères

Une chaîne est une séquence de caractères. PHP travaille en ASCII soit 256 caractères, mais ne supporte pas encore le format Unicode, prévu dans la version 5. Il n'y a pas de limite théorique pour la taille de la chaîne. On distingue trois syntaxes pour utiliser un chaîne

  • Les guillemets simples '...' (apostrophes) : Comme en shell, tous les caractères inclus dans la chaîne sont sortis tels quels sans interprétation. Si vous devez afficher un guillemet simple, il faudra l'échapper : '
  • Les guillemets doubles "..." : Certaines séquences de caractères sont interprétées et les variables sont substituées (remplacées par leur valeur).
  • HereDoc : Identique aux HereScripts en Shell. Le texte saisi jusqu'à un délimiteur spécifié est placé dans la variable. Voici le tableau issu de la documentation PHP des séquences pouvant être utilisés avec les guillemets doubles. Séquence Valeur \n (^) Nouvelle ligne (linefeed, LF ou 0x0A (10) en ASCII) \r Retour à la ligne (carriage return, CR ou 0x0D (13) en ASCII) \t (^) Tabulation horizontale (HT ou 0x09 (9) en ASCII) \ (^) Antislash $ (^) Caractère $ " (^) Guillemets doubles [0-7]{1,3} Une séquence de caractères qui permet de rechercher un nombre en notation octale. \x[0-9A-Fa- f]{1,2} Une séquence de caractères qui permet de rechercher un nombre en notation hexadécimale. echo 'Attention l'abus d'alcool est dangereux'; $var= 2345 ; echo "la valeur de $var est $var\n"; $toto= << Salut les amis Comment ça va? FIN; echo $toto; N'importe quelle variable peut être affichée dans une chaîne comme ci-dessus mais attention si deux variables ont un nom proche! Il faut alors utiliser les accolades { } comme en shell. Enfin on peut accéder à n'importe quel caractère dans une chaîne en indiquant sa position (qui commence à zéro) entre deux accolades collées juste après le nom de la variable. $fic='toto.fic'; $fics='riri fifi loulou'; echo "$fics ${fic}s"; // affiche riri fifi loulou toto.fics echo "$fic{3}"; // affiche o On peut facilement concaténer deux chaînes avec l'opérateur point «. ». On peut ajouter du texte à une chaîne avec l'opérateur point égal « .= ». $str="Salut les Amis !\n"; $str.="Comment ça va ?"; // "Salut les Amis !\nComment ça va? $str2=$str."\n"; // "Salut les Amis !\nComment ça va ?\n Si vous devez utiliser une chaîne de caractères comme valeur numérique (dans une addition par exemple, attention à son contenu. La chaîne sera de type double (réel) si elle contient un 'e' ou un 'E'. Sinon ce sera un entier. La valeur numérique est ensuite définie par le début de la chaîne. Si la chaîne commence par une valeur numérique, elle sera utilisée, sinon elle sera égale à 0 zéro. Si la première expression est une chaîne, le type de variable dépend de la seconde expression. $val= 10 +"2.55"; // float, 12. $val= 1 +"toto2"; // 1 + 0 = 1 $val= 2 +"3 petits cochons"; // 2 + 3 = 5 (le 3 est en premier dans la chaîne)

3.5.5 Les tableaux

Un tableau PHP est une association ordonnée. Une association fait correspondre des valeurs à des clés. Les tableaux sont très souples, ils peuvent avoir de multiples dimensions, être indexés par une clé numérique ou texte, être utilisés comme table de hachage, une pile, une queue, ... Une valeur de tableau peut être elle-même un tableau, pour créer des arbres par exemple. Un tableau est créé avec la fonction array() qui prend comme arguments des paires « key => value » séparées par des virgules. La clé peut être soit un entier soit du texte. Attention, 8 est un entier, 08 une chaîne! Si la clé est absente alors c'est la dernière clé entière plus 1 qui est choisie. Si c'est la première, c'est 0 zéro. On accède aux éléments d'un tableau à l'aide des crochets « [ et ] ». On place entre ces crochets la clé entière ou la chaîne. $var=array(10,15,17,23,9); echo $var[ 0 ]; // 10 echo $var[ 3 ]; // 17 $tab=array("a"=> 12 ,"nom"=>"toto","pipo", 17 , 4 => 5 ); echo $tab[ 0 ]; // pipo echo $tab[ 1 ]; // 17 echo $tab['a']; // 12 echo $tab['nom']; // toto

3.7 Obtenir le type d'une variable

Pour obtenir le type d'une variable, on utilise la fonction « gettype » qui retourne une chaîne de texte indiquant le type. Mais attention rien ne garantit que le résultat soit le même d'une version PHP à une autre. Les types retournés sont "boolean", "integer", "double" (pour des raisons historiques, "double" est retournée lorsqu'une valeur de type float est fournie, au lieu de la chaîne "float"), "string", "array", "object", "resource" (depuis PHP 4), "NULL" (depuis PHP 4), "unknown type" Si vous souhaitez réellement tester le type d'une variable, il est préférable d'utiliser les fonctions de type « is_* » : is_array, is_bool, is_double, is_float, is_int, is_integer, is_long, is_null, is_numeric, is_object, is_real, is_resource, is_string, is_callable (est-ce une fonction).

3.8 Définir et supprimer une variable

Si vous souhaitez savoir si une variable est définie, c'est à dire si elle est affectée, on utilise « isset ». Enfin si vous souhaitez supprimer une variable, il faut utiliser « unset ».

4 Les opérateurs

4.1 La précédence des opérateurs

C'est l'ordre dans lequel les valeurs doivent être analysées. Ainsi l'expression 4 + 3 * 7 n'est pas lue de gauche à droite et ne retourne pas 49 mais 25. Voici le tableau des priorités des opérateurs par ordre croissant de priorité : Associativité Opérateurs gauche , gauche or gauche xor gauche and droite print gauche = += -= *= /= .= %= &= |= ^= ~= <<=>>= gauche? : gauche || gauche && gauche | gauche ^ gauche & non-associative == != === !== non-associative < <= > >= gauche << >> gauche + -. gauche * / % droite! ~ ++ -- (int) (double) (string) (array) (object) @ droite [ non-associative new

4.2 Opérateurs arithmétiques

Les opérateurs +, -, *, / et %. Le « % » est le modulo : le reste de la division.

4.3 Opérateurs d'assignation

Le principal est le = mais on a aussi comme en C des opérateurs combinés +=, -=, *=, /=, %=, .= ...

4.4 Opérateurs sur les bits

Les opérateurs sont le & (AND), | (OR), ^ (XOR), ~ (NOT, ~$a), >> ($a>>$b décalage de $b bits