Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parOdille Bertin Modifié depuis plus de 10 années
1
1
2
Sommaire Quest-ce que PHP ? Les structures de base Traitements de base Traitements de chaînes Utilisation des tableaux Fonctions usuelles Formulaires et superglobales Environnement web et superglobales Les cookies et Les sessions Gestion des objets Gestion de chiers Gestion des ux et Flux de sortie PHP Envoyer et recevoir des e-mails Travailler avec une base de données 2
3
Sommaire Erreurs et exceptions XML : concepts et SimpleXML XML avancé Les services web Les templates Les systèmes de cache Gestion des images Expressions régulières Sécurité Outils de développement PHP Les CMS Les frameworks 3
4
Quest-ce que PHP ? Particularités de PHP De nombreux connecteurs techniques : bases de données (Oracle, SQL Server, MySQL, dBase, ODBC, etc.), annuaires (LDAP, etc.), systèmes de paiement en ligne (VeriSign, Cybercash, Crédit Mutuel, etc.) et lessentiel des protocoles et des formats quon peut rencontrer (TCP, HTTP, SMTP, LDAP, IMAP, POP, SSL, Soap, XSLT, XML, PDF, etc.). 4
5
Quest-ce que PHP ? Particularités de PHP Les performances de PHP : PHP est extrêmement performant et fiable. Avec un seul serveur standard, on peut répondre à des millions de requêtes par jour. Des sites ou des applications importantes utilisent PHP (Le Monde, Le Figaro, TV5, Yahoo, TF1, Canal +…). La portabilité Coûts de licence Coûts de développement Dynamisme de la communauté PHP : La communauté PHP est estimée par la société Zend à près de 4 500 000 développeurs courant 2007. 5
6
Quest-ce que PHP ? Historique PHP/FI : créé en 1995 par Rasmus Lerdorf. La version 2.0 fut publié officiellement en novembre 1997. PHP 3 : En 1997, Andi Gutsman et Zeev Suraski (fondateurs de Zend : combinaison des prénoms Zeev et Andi) essayèrent dutiliser PHP/FI dans le cadre du développement dune application de e-commerce, mais les performances nétaient pas suffisantes. Ils décidèrent de réécrire PHP/FI de façon complète. Au bout dune dizaine de mois de test et de débogage, la première version officielle de PHP 3.0 fut lancée en juin 1998. 6
7
Quest-ce que PHP ? Historique PHP 4 : en mai 2000, le Zend Engine fut officiellement intégré à PHP dans sa nouvelle version : PHP 4.0. Les principales évolutions tenaient à sa prise en charge des sessions HTTP et de nombreux serveurs web, ainsi quà la mise en tampon des sorties et à une sécurité accrue des informations visiteurs. 7
8
Quest-ce que PHP ? Historique PHP 5 : La première version stable de PHP 5 a fait son apparition en 2004. les principales nouveautés sont : lintégration du Zend Engine 2, qui amène une prise en charge complète de la programmation orientée objet ; la refonte de la prise en charge de XML ; lintégration de la base de données SQLite ; la simplification des principales tâches courantes. lapparition dun socle commun pour la gestion des appels aux bases de données : PHP Data Object (PDO). 8
9
Quest-ce que PHP ? PHP peut être utilisé pour différents types de développement. Fonctionnement couplé à un serveur web Applications en ligne de commande Services web Applications graphiques 9
10
Quest-ce que PHP ? Dans la plupart des déploiements, PHP est utilisé conjointement avec : généralement Apache comme serveur HTTP ou, plus rarement, Microsoft IIS ; MySQL et Oracle comme SGBD/R ; on peut aussi rencontrer PostgreSQL ou Microsoft SQL Server ; Linux ou BSD comme système dexploitation ; Windows ou MacOS sont aussi des possibilités fonctionnelles. Les plates-formes en production reposent en majorité sur le quatuor Linux, Apache, MySQL et PHP (LAMP). 10
11
Quest-ce que PHP ? 11
12
Quest-ce que PHP ? 12 Fonctionnement de PHP
13
Quest-ce que PHP ? 13 La machine virtuelle de PHP
14
Les structures de base Dans lexemple plus haut, PHP ajoute une chaîne de caractères au milieu du code HTML 14
15
Balises douverture et de fermeture Les structures de base Il est conseillé fortement lutilisation unique de louverture <?php, car elle est la seule vraiment portable sur toutes les configurations. Les autres formulations sont activables ou désactivables via des options dans le chier de configuration php.ini (directive short_tags pour <? et directive asp_tags pour <%). 15
16
Les commentaires Les structures de base <?php /* Commentaires sur plusieurs lignes exemple */ // Commentaires sur une ligne echo "ceci nest pas commenté" ; ?> <?php /* Commentaires sur plusieurs lignes exemple */ // Commentaires sur une ligne echo "ceci nest pas commenté" ; ?> 16
17
Variables Les structures de base Les variables en PHP se trouvent sous la forme $nom_variable. Il est important de noter que les noms de variables sont sensibles à la casse. $PHP, $Php et $php sont trois variables différentes. 17 PHP est un langage dit « de typage faible et dynamique ». Lutilisation en lecture dune variable non initialisée nest pas un problème. Une variable inexistante renverra la valeur NULL
18
Variables Les structures de base Les variables de PHP sont par défaut ce quon appelle des variables locales. Elles ne sont visibles et lisibles que dans le contexte où elles ont été créées. Parfois, lutilisation de variables globales dans les fonctions peut être utile. On peut alors utiliser le tableau $GLOBALS[]. Il sagit dun tableau associatif contenant des références sur toutes les variables globales actuellement définies. Ainsi, $GLOBALS['var'] représente la variable globale $var. 18 <?php function gargarise($var1,$var2){ echo $var1, $GLOBALS['titre'], $var2, $GLOBALS['auteur']; } $titre = 'EL DESDICHADO'; $auteur = 'Gérard de Nerval'; gargarise('Mon poème préféré est ', '. Son auteur est '); // Affiche Mon poème préféré est EL DESDICHADO. // Son auteur est Gérard de Nerval ?> <?php function gargarise($var1,$var2){ echo $var1, $GLOBALS['titre'], $var2, $GLOBALS['auteur']; } $titre = 'EL DESDICHADO'; $auteur = 'Gérard de Nerval'; gargarise('Mon poème préféré est ', '. Son auteur est '); // Affiche Mon poème préféré est EL DESDICHADO. // Son auteur est Gérard de Nerval ?>
19
Variables Les structures de base Une alternative à lutilisation du tableau $GLOBALS est de déclarer une variable comme étant une variable globale en début de fonction grâce au mot-clé global. Il doit être suivi dun ou plusieurs noms de variables séparés par des virgules.. 19 <?php function gargarise($var1,$var2){ global $titre, $auteur ; echo $var1, $titre, $var2, $auteur; } $titre = 'EL DESDICHADO'; $auteur = 'Gérard de Nerval'; gargarise('Mon poème préféré est ', '.Son auteur est '); // Affiche Mon poème préféré est EL DESDICHADO. // Son auteur est Gérard de Nerval ?> <?php function gargarise($var1,$var2){ global $titre, $auteur ; echo $var1, $titre, $var2, $auteur; } $titre = 'EL DESDICHADO'; $auteur = 'Gérard de Nerval'; gargarise('Mon poème préféré est ', '.Son auteur est '); // Affiche Mon poème préféré est EL DESDICHADO. // Son auteur est Gérard de Nerval ?>
20
Test dexistence Les structures de base La fonction isset() permet de tester si une variable existe. Dans le cas où lon a précédemment affecté une valeur à $var, la fonction renverra la valeur TRUE. Dans le cas contraire, la fonction renverra la valeur FALSE. 20 <?php $s = "test"; echo isset($s); // Renvoie TRUE echo isset($j); // Renvoie FALSE ?> <?php $s = "test"; echo isset($s); // Renvoie TRUE echo isset($j); // Renvoie FALSE ?>
21
Destruction Les structures de base La fonction unset() permet de détruire une variable dans votre programme. Après son exécution, la variable qui lui est passée en paramètre nexiste plus. 21 <?php $s = "test"; echo isset($s); // Renvoie TRUE unset($s); echo isset($s); // Renvoie FALSE ?> <?php $s = "test"; echo isset($s); // Renvoie TRUE unset($s); echo isset($s); // Renvoie FALSE ?>
22
Variables dynamiques Les structures de base Les variables dynamiques (aussi dites variables variables) reposent sur le fait que le nom dune variable peut lui-même être une variable. Voyons lexemple ci-après pour appréhender la chose : 22 <?php $cd = "15 DH"; $dvd = "30 DH"; $produit = "dvd"; // On choisit comme produit le dvd echo $$produit; // Affiche 30 DH soit le prix du dvd ?> <?php $cd = "15 DH"; $dvd = "30 DH"; $produit = "dvd"; // On choisit comme produit le dvd echo $$produit; // Affiche 30 DH soit le prix du dvd ?>
23
Variables dynamiques Les structures de base Il est aussi possible de référencer un nom dynamique en une seule opération grâce à des accolades : 23 <?php $cd = "15 DH"; $dvd = "30 DH"; echo ${"dvd"}; // Affiche 30 DH $produit = "dvd"; echo ${$produit}; // Équivaut à echo $dvd et affiche donc 30 DH ?> <?php $cd = "15 DH"; $dvd = "30 DH"; echo ${"dvd"}; // Affiche 30 DH $produit = "dvd"; echo ${$produit}; // Équivaut à echo $dvd et affiche donc 30 DH ?>
24
Constantes Les structures de base Le langage PHP dénit les constantes à laide de la fonction define(). Elles ne peuvent plus par la suite recevoir dautres valeurs. Par convention, on écrit les constantes en majuscules pour faciliter la relecture du code. 24 <?php define("NOM", "Anaska"); echo NOM; ?> <?php define("NOM", "Anaska"); echo NOM; ?> Les constantes ne comportent pas de $ devant leur nom.
25
Constantes Les structures de base Il est fréquent de construire des chiers qui ne contiennent que des constantes, pour gérer des paramètres de conguration ou des traductions de manière centralisée. 25 <?php // $Id: install.php,v 1.7 2003/02/12 11:35:36 okazu Exp $ // Support Francophone de Xoops (www.frxoops.org) define("_INSTALL_L0","Bienvenue dans l'assistant XOOPS 2.0"); define("_INSTALL_L2","Maintenant, changez cette ligne en :"); define("_INSTALL_L3","Ensuite, à la ligne 35, changez %s en %s"); define("_INSTALL_L5","ATTENTION !"); define("_INSTALL_L7","Vos paramètres : "); define("_INSTALL_L8","Nous avons détecté : ");... ?> <?php // $Id: install.php,v 1.7 2003/02/12 11:35:36 okazu Exp $ // Support Francophone de Xoops (www.frxoops.org) define("_INSTALL_L0","Bienvenue dans l'assistant XOOPS 2.0"); define("_INSTALL_L2","Maintenant, changez cette ligne en :"); define("_INSTALL_L3","Ensuite, à la ligne 35, changez %s en %s"); define("_INSTALL_L5","ATTENTION !"); define("_INSTALL_L7","Vos paramètres : "); define("_INSTALL_L8","Nous avons détecté : ");... ?> switch ($op) { default: case "langselect": $title = _INSTALL_L0;... switch ($op) { default: case "langselect": $title = _INSTALL_L0;...
26
Types de données Les structures de base PHP dispose de quatre types de données simples : des booléens, des entiers, des nombres à virgule ottante et des chaînes de caractères. 26 <?php echo gettype("chaîne de caractères") ; // Affiche string ?> <?php echo gettype("chaîne de caractères") ; // Affiche string ?>
27
Types de données Les structures de base 27 Il est aussi possible dutiliser des fonctions daccès rapide telle que is_string() <?php $var = 12; if (is_string($var)) { echo "chaîne de caractères" ; } else { echo "autre type" ; } // Affiche autre type ?> <?php $var = 12; if (is_string($var)) { echo "chaîne de caractères" ; } else { echo "autre type" ; } // Affiche autre type ?> Les fonctions is_double() et is_float() vérient si la valeur est un nombre à virgule ottante, les fonctions is_int() et is_integer() vérient si la valeur est un nombre entier. Les fonctions is_boolean(), is_array(), is_null(), is_object() et is_resource() vérient respectivement si la valeur est un booléen, un tableau, la valeur NULL, un objet ou une ressource interne.
28
Types de données Les structures de base 28 <?php $nombre = 45; $nb_negatif = -15 ; $nb_hexa = 0x1A ; ?> <?php $nombre = 45; $nb_negatif = -15 ; $nb_hexa = 0x1A ; ?> <?php $nombre = 3.14159; $nombre = 5e7; $nombre = 1.000; ?> <?php $nombre = 3.14159; $nombre = 5e7; $nombre = 1.000; ?>
29
Interprétation des variables Les structures de base À lintérieur dune chaîne entre guillemets, les variables sont automatiquement remplacées par leur valeur. 29 <?php $objet = "livre"; $chaine = "Son $objet a déclenché la légende"; echo $chaine; // Affiche Son livre a déclenché la légende ?> <?php $objet = "livre"; $chaine = "Son $objet a déclenché la légende"; echo $chaine; // Affiche Son livre a déclenché la légende ?> <?php $objet = new stdClass() ; $objet->propriete = "livre" ; $chaine = "Son {$objet->propriete} a déclenché la légende"; $tableau['index'] = "livre" ; $chaine = "Son {$tableau['index']} a déclenché..."; ?> <?php $objet = new stdClass() ; $objet->propriete = "livre" ; $chaine = "Son {$objet->propriete} a déclenché la légende"; $tableau['index'] = "livre" ; $chaine = "Son {$tableau['index']} a déclenché..."; ?>
30
Le caractère déchappement (ou protection) Les structures de base Pour éviter cela, on protège les guillemets avec le caractère déchappement, une barre oblique inverse (symbole \). Dans ce cas, linterpréteur PHP ne considérera pas les guillemets comme un signe de n puisquils sont protégés. On aura donc : 30 <?php $chaine = "Son livre "le premz" a déclenché la légende"; // Renvoie un message derreur ?> <?php $chaine = "Son livre "le premz" a déclenché la légende"; // Renvoie un message derreur ?> <?php $chaine = "Son livre \"le premz\" a déclenché la légende"; ?> <?php $chaine = "Son livre \"le premz\" a déclenché la légende"; ?>
31
Le caractère déchappement (ou protection) Les structures de base De la même façon, tous les caractères normalement interprétés par PHP peuvent être protégés pour être utilisés tels quels en les préxant par une barre oblique inverse. Cest en particulier le cas avec $ pour éviter que ce qui suit ne soit interprété comme une variable à remplacer, et avec \ pour éviter quil soit associé au caractère suivant et ne le protège. 31 <?php $variable = "PHP5 avancé"; $chaine = "Le contenu de \$variable est \"$variable\" "; echo $chaine; echo "Pour afficher un antislash (\\) il faut le protéger" ; ?> <?php $variable = "PHP5 avancé"; $chaine = "Le contenu de \$variable est \"$variable\" "; echo $chaine; echo "Pour afficher un antislash (\\) il faut le protéger" ; ?>
32
Le caractère déchappement (ou protection) Les structures de base Dautres combinaisons peuvent être utilisées. Les plus courantes sont \n (caractère de changement de ligne), \r (retour chariot) et \t (tabulation). Si vous souhaitez utiliser des caractères spéciaux, vous pouvez les référencer par leur code caractère. Ainsi, \x20 représente le caractère espace (caractère 20 en hexadécimal dans la table ASCII). 32
33
Délimitation par apostrophes Les structures de base Lorsquune chaîne contient beaucoup de caractères interprétables comme des guillemets ou des barres obliques inverses, il devient complexe de protéger chaque caractère. Il est alors possible de délimiter une chaîne de caractères avec des apostrophes (caractère '). Dans ce cas, seules les apostrophes sont à protéger ; tous les autres caractères peuvent être mis directement dans la chaîne et seront pris tels quels sans être interprétés. 33 <?php echo 'texte ' ; // Affiche texte echo '\ \n $variable ' ; // Affiche \ \n $variable echo 'l\'apostrophe ' ; // Affiche lapostrophe echo 'antislash : \\ ' ; // Affiche antislash : \ ?> <?php echo 'texte ' ; // Affiche texte echo '\ \n $variable ' ; // Affiche \ \n $variable echo 'l\'apostrophe ' ; // Affiche lapostrophe echo 'antislash : \\ ' ; // Affiche antislash : \ ?>
34
Syntaxe heredoc Les structures de base La syntaxe heredoc se comporte exactement comme une chaîne à guillemets, sans les guillemets. Cela signie que vous navez pas à échapper les guillemets dans cette syntaxe. es variables sont remplacées par leur valeur, et le même soin doit leur être apporté que dans les chaînes à guillemets. 34 <?php $nom = 'Daspet'; $texte =<<<icijemetscequejeveux Exemple de chaîne s'étalant sur plusieurs lignes avec la syntaxe heredoc Mon nom est contenu dans la variable \$nom : "$nom". Je peux écrire des caractères spéciaux : 'A' majuscule: \x41 icijemetscequejeveux; echo $texte; ?> <?php $nom = 'Daspet'; $texte =<<<icijemetscequejeveux Exemple de chaîne s'étalant sur plusieurs lignes avec la syntaxe heredoc Mon nom est contenu dans la variable \$nom : "$nom". Je peux écrire des caractères spéciaux : 'A' majuscule: \x41 icijemetscequejeveux; echo $texte; ?>
35
Accéder à un caractère dune chaîne Les structures de base Il est possible daccéder directement à un caractère dans une chaîne en le référençant par sa position. Il suffit alors dajouter la position entre accolades après le nom de la variable : 35 <?php $chaine = "hello world" ; echo $chaine{1} ; // Affiche e ?> <?php $chaine = "hello world" ; echo $chaine{1} ; // Affiche e ?>
36
Les tableaux (array) Les structures de base PHP permet deux types de tableaux : les tableaux indexés numériquement et les tableaux associatifs. Il nest pas nécessaire de déclarer leur taille lors de la déclaration, elle est gérée par PHP. 36 <?php $tableau = array( 12550, 15555, 12000, 21300, 25252, 20010, 8460); $tab2 = array( $variable, "texte", 153, 56 ) ; ?> <?php $tableau = array( 12550, 15555, 12000, 21300, 25252, 20010, 8460); $tab2 = array( $variable, "texte", 153, 56 ) ; ?>
37
Les tableaux (array) Les structures de base 37 <?php // On commence par assigner des valeurs au tableau $tableau[0] = 12250; $tableau[10] = 35120; // Puis on peut le manipuler echo $tableau[10] ; ?> <?php // On commence par assigner des valeurs au tableau $tableau[0] = 12250; $tableau[10] = 35120; // Puis on peut le manipuler echo $tableau[10] ; ?> <?php $tabA = array( 1, 2, 3 ) ; $tabB[0] = 1 ; $tabB[1] = 2 ; $tabB[2] = 3 ; $tabC[] = 1 ; $tabC[] = 2 ; $tabC[] = 3 ; ?> <?php $tabA = array( 1, 2, 3 ) ; $tabB[0] = 1 ; $tabB[1] = 2 ; $tabB[2] = 3 ; $tabC[] = 1 ; $tabC[] = 2 ; $tabC[] = 3 ; ?>
38
Tableaux associatifs Les structures de base Il associe une chaîne de caractères à un élément. On parle alors de tableau associatif ou de table de hachage. 38 <?php $tab = array( "prenom" => "Cyril", "ville" => "Paris", "travail" => "informatique" ) ; ?> <?php $tab = array( "prenom" => "Cyril", "ville" => "Paris", "travail" => "informatique" ) ; ?>
39
Tableaux associatifs Les structures de base Il associe une chaîne de caractères à un élément. On parle alors de tableau associatif ou de table de hachage. 39 <?php $tableau['nom'] = "PIERRE de GEYER"; $tableau['prenom'] = "Cyril"; $tableau['ville'] = "Paris"; $tableau['cp'] = "75005"; $tableau['sexe'] = "m"; $tableau['telephone'] = "0143819291"; $tableau['travail'] = "informatique"; $tableau['Pays'] = "france"; echo "Votre contact à {$tableau['ville']} sera monsieur "; echo $tableau['nom']; echo " Son téléphone est le "; echo $tableau['telephone']; ?> <?php $tableau['nom'] = "PIERRE de GEYER"; $tableau['prenom'] = "Cyril"; $tableau['ville'] = "Paris"; $tableau['cp'] = "75005"; $tableau['sexe'] = "m"; $tableau['telephone'] = "0143819291"; $tableau['travail'] = "informatique"; $tableau['Pays'] = "france"; echo "Votre contact à {$tableau['ville']} sera monsieur "; echo $tableau['nom']; echo " Son téléphone est le "; echo $tableau['telephone']; ?>
40
Tableaux multidimensionnels Les structures de base 40 <?php $matrice[0][0] = 5; $matrice[0][1] = 4; $matrice[1][0] = 2; $matrice[1][1] = 3; $matrice[2][0] = 8; $matrice[2][1] = 2; ?> <?php $matrice[0][0] = 5; $matrice[0][1] = 4; $matrice[1][0] = 2; $matrice[1][1] = 3; $matrice[2][0] = 8; $matrice[2][1] = 2; ?> Il est également possible de créer des tableaux à plusieurs dimensions pour stocker, par exemple, une matrice. <?php $matrice = array( array(5,4), array(2,3), array(8,2) ); ?> <?php $matrice = array( array(5,4), array(2,3), array(8,2) ); ?>
41
Transtypage Les structures de base Quand PHP convertit un texte en nombre, il regarde en début de la chaîne de caractères sil trouve un nombre connu. Si cest le cas, il fait une conversion directe : 41 echo "3" + 1 ; // Affiche 4 echo 1 + "-1.3e3" ; // Affiche -1299 echo 1 + "3 petits cochons" ; // Affiche 4 echo 1 + "petits cochons" ; // Affiche 1 echo "3" + 1 ; // Affiche 4 echo 1 + "-1.3e3" ; // Affiche -1299 echo 1 + "3 petits cochons" ; // Affiche 4 echo 1 + "petits cochons" ; // Affiche 1 Les booléens ne permettent que deux valeurs, une valeur vraie et une valeur fausse. Sont considérés comme des valeurs fausses : les constantes FALSE et NULL ; une chaîne de caractères vide ; le nombre entier ou à virgule ottante 0 ; une chaîne de caractères contenant uniquement le nombre 0 ; un tableau vide ; un objet avec aucun champ déni. Toutes les autres données seront considérées comme « vraies ».
42
Forcer une conversion Les structures de base PHP fait automatiquement et de manière satisfaisante toutes les conversions nécessaires entre les différents types de données. Vous pouvez toutefois forcer une conversion en ajoutant le type de donnée entre parenthèses devant la donnée. 42 <?php echo gettype( "12" ); // Affiche string echo gettype( (integer) "12" ); // Affiche integer echo gettype( (string) 12 ); // Affiche string ?> <?php echo gettype( "12" ); // Affiche string echo gettype( (integer) "12" ); // Affiche integer echo gettype( (string) 12 ); // Affiche string ?> <?php echo gettype( "12" ) ; // Affiche string echo gettype( settype("12", 'integer') ) ; // Affiche integer echo gettype( settype(12, 'string') ) ; // Affiche string ?> <?php echo gettype( "12" ) ; // Affiche string echo gettype( settype("12", 'integer') ) ; // Affiche integer echo gettype( settype(12, 'string') ) ; // Affiche string ?>
43
Forcer une conversion Les structures de base Vous pouvez aussi passer par des fonctions dédiées pour les conversions les plus courantes. Ainsi, intval() convertit une donnée en paramètre vers un entier, strval() fait la conversion vers une chaîne de caractères, floatval() et doubleval() font la conversion vers un nombre à virgule ottante. 43 <?php echo gettype( "12" ) ; // Affiche string echo gettype( intval( "12" ) ) ; // Affiche integer echo gettype( strval( 12 ) ) ; // Affiche string ?> <?php echo gettype( "12" ) ; // Affiche string echo gettype( intval( "12" ) ) ; // Affiche integer echo gettype( strval( 12 ) ) ; // Affiche string ?>
44
Opérateurs daffectation Traitements de base Lopérateur daffectation est le signe égal. La variable avant le symbole égal (=) prend la valeur spécifiée après. 44 <?php $j = $i = 5 ; // Est comme : $j = ($i = 5) ; // Équivalent à $j = 5 ; echo ($i = 5) ; // Affiche 5 ?> <?php $j = $i = 5 ; // Est comme : $j = ($i = 5) ; // Équivalent à $j = 5 ; echo ($i = 5) ; // Affiche 5 ?>
45
Affectation par copie et références Traitements de base Il est possible, de créer un lien fort entre deux variables en ajoutant un & juste derrière le signe daffectation. Dans ce cas, on dit que les deux noms référencent la même valeur. 45 <?php $origine = 1 ; $copie =& $origine ; $copie = $copie +1; echo $copie ; // Donne 2 (1+1) echo $origine ; // Donne 2 aussi // Puisque les deux noms correspondent en fait à la même valeur ?> <?php $origine = 1 ; $copie =& $origine ; $copie = $copie +1; echo $copie ; // Donne 2 (1+1) echo $origine ; // Donne 2 aussi // Puisque les deux noms correspondent en fait à la même valeur ?>
46
Affectation par copie et références Traitements de base Pour effacer une référence, il vous suft dutiliser unset() sur la variable. Vous effacez alors le lien entre le nom et la valeur. Les éventuels autres noms utilisant la même valeur ne sont pas affectés. 46 <?php $origine = 1 ; $reference =& $origine ; $origine = 2 ; echo 'Valeur de $reference : ', $reference, ' '; // Affiche 2 unset($origine) ; echo 'Valeur de $origine : ', $origine, ' '; // Naffiche plus rien echo 'Valeur de $reference : ', $reference, ' '; // Affiche toujours la valeur 2 ?> <?php $origine = 1 ; $reference =& $origine ; $origine = 2 ; echo 'Valeur de $reference : ', $reference, ' '; // Affiche 2 unset($origine) ; echo 'Valeur de $origine : ', $origine, ' '; // Naffiche plus rien echo 'Valeur de $reference : ', $reference, ' '; // Affiche toujours la valeur 2 ?>
47
Opérateurs arithmétiques Traitements de base 47
48
Lutilité du modulo (%) Traitements de base Modulo renvoie le reste de la division. Par exemple, pour 15 % 2, on fait le calcul suivant : 15 = 7 * 2 + 1. Le modulo de 15%2 est donc 1. Cela nous permet, par exemple, dafficher une ligne sur deux dun tableau HTML avec une couleur de fond différente : 48 <?php $i = 0; echo ' '; while ($i < 10){ if (($i % 2)==0){ // Cas dune ligne paire echo " $i "; } else { // Cas dune ligne impaire echo " $i "; } $i++; } echo ' '; ?> <?php $i = 0; echo ' '; while ($i < 10){ if (($i % 2)==0){ // Cas dune ligne paire echo " $i "; } else { // Cas dune ligne impaire echo " $i "; } $i++; } echo ' '; ?>
49
Incrémentation Traitements de base 49
50
Opérateurs combinés Traitements de base 50 <?php $a = 10; $b = 7; $a *= 5; // $a est égal à 50 $b += $a; // $b est égal à 57 ?> <?php $a = 10; $b = 7; $a *= 5; // $a est égal à 50 $b += $a; // $b est égal à 57 ?>
51
La concaténation Traitements de base 51 <?php $a = 'hello '; $a.= 'world'; // $a est égal à 'hello world' $table = 'users'; $id = 5; $sql = 'SELECT * FROM '. $table." WHERE id='$id'"; echo 'Il est '. date('G \h i'). ' et il fait beau'; ?> <?php $a = 'hello '; $a.= 'world'; // $a est égal à 'hello world' $table = 'users'; $id = 5; $sql = 'SELECT * FROM '. $table." WHERE id='$id'"; echo 'Il est '. date('G \h i'). ' et il fait beau'; ?>
52
Opérateurs de comparaison Traitements de base 52
53
Opérateurs logiques Traitements de base 53
54
Opérateurs sur les bits Traitements de base 54 <?php $un = 1 ; // Sécrit 1 en binaire $deux = 2 ; // Sécrit 10 en binaire $trois = $un | $deux ; // Sécrit 11 en binaire $quatre = $deux << $un ; // Sécrit 100 en binaire ?> <?php $un = 1 ; // Sécrit 1 en binaire $deux = 2 ; // Sécrit 10 en binaire $trois = $un | $deux ; // Sécrit 11 en binaire $quatre = $deux << $un ; // Sécrit 100 en binaire ?>
55
Priorités entre opérateurs Traitements de base 55
56
Structures de contrôle : Les conditions Traitements de base Linstruction if(){} est la structure de test la plus basique. Elle permet dexécuter une suite dinstructions en fonction dune condition. La condition entre parenthèses est évaluée et les instructions situées entre les accolades sont exécutées seulement si lévaluation aboutit à TRUE 56 <?php $age = 25; if($age > 18 && $age < 35) { echo 'Votre profil est : jeune adulte'; } ?> <?php $age = 25; if($age > 18 && $age < 35) { echo 'Votre profil est : jeune adulte'; } ?>
57
Structures de contrôle : Les conditions Traitements de base On peut également spécier une suite dinstructions à exécuter lorsque la condition nest pas réalisée, avec linstruction else{} 57 <?php $temps = 'moche'; if($temps == 'ensoleillé') { echo 'Il fait beau'; }else{ echo 'Il ne fait pas beau'; } ?> <?php $temps = 'moche'; if($temps == 'ensoleillé') { echo 'Il fait beau'; }else{ echo 'Il ne fait pas beau'; } ?>
58
Structures de contrôle : Les conditions Traitements de base il est possible denchaîner une série dinstructions if (sans avoir besoin de les imbriquer) à laide de linstruction elseif 58 <?php $salaire = mt_rand(1,6000) ; if ($salaire < 1000) { echo 'Vous êtes payé en dessous du SMIC'; } elseif ($salaire < 3000) { echo 'Vous êtes raisonnablement bien payé'; // On notera ici quil nest pas nécessaire de répéter la // condition impliquant que le salaire est supérieur à 1000 } else { echo 'Contactez–moi, votre travail m\'intéresse !'; } ?> <?php $salaire = mt_rand(1,6000) ; if ($salaire < 1000) { echo 'Vous êtes payé en dessous du SMIC'; } elseif ($salaire < 3000) { echo 'Vous êtes raisonnablement bien payé'; // On notera ici quil nest pas nécessaire de répéter la // condition impliquant que le salaire est supérieur à 1000 } else { echo 'Contactez–moi, votre travail m\'intéresse !'; } ?>
59
Structures de contrôle : Linstruction switch Traitements de base Cette instruction permet de faire plusieurs tests sur la valeur dune variable, ce qui évite de faire plusieurs if imbriqués et simplie ainsi la lecture du code. Il est possible démuler le comportement dune suite if/elseif/else en mettant un break pour chaque case. 59 <?php $nombre = mt_rand(0,4); switch ($nombre) { case 4: echo "$nombre est supérieur à 3 "; case 3: echo "$nombre est supérieur à 2 "; case 2: echo "$nombre est supérieur à 1 "; case 1: echo "$nombre est supérieur à 0 "; break ; default: echo "$nombre est 0 "; } ?> <?php $nombre = mt_rand(0,4); switch ($nombre) { case 4: echo "$nombre est supérieur à 3 "; case 3: echo "$nombre est supérieur à 2 "; case 2: echo "$nombre est supérieur à 1 "; case 1: echo "$nombre est supérieur à 0 "; break ; default: echo "$nombre est 0 "; } ?>
60
Structures de contrôle : Linstruction while Traitements de base Linstruction while(){} correspond à « tant que ». Donc, on pourra exécuter des instructions tant quune condition sera remplie 60 <?php $i = 1; while ( $i <= 10 ) { echo $i; $i++; } ?> <?php $i = 1; while ( $i <= 10 ) { echo $i; $i++; } ?> <?php $i = 1; do { echo "$i"; $i++; } while ($i <= 10); ?> <?php $i = 1; do { echo "$i"; $i++; } while ($i <= 10); ?>
61
Structures de contrôle : Linstruction for Traitements de base 61 <?php for ( $i = 2; $i <= 10 ; $i++ ) { echo "$i -"; } ?> <?php for ( $i = 2; $i <= 10 ; $i++ ) { echo "$i -"; } ?>
62
Structures de contrôle : Linstruction foreach Traitements de base Cest un moyen simple de parcourir un à un les éléments dun tableau. 62 <?php $tab = array( 'prenom' => 'Cyril', 'ville' => 'Paris', 'travail' => 'informatique' ) ; foreach ($tab as $element) { echo "Valeur: $element \n"; } foreach ($tab as $cle => $valeur) { echo "Cle : $cle; Valeur: $valeur \n"; } ?> <?php $tab = array( 'prenom' => 'Cyril', 'ville' => 'Paris', 'travail' => 'informatique' ) ; foreach ($tab as $element) { echo "Valeur: $element \n"; } foreach ($tab as $cle => $valeur) { echo "Cle : $cle; Valeur: $valeur \n"; } ?>
63
Structures de contrôle : Linstruction foreach Traitements de base Il est possible, depuis PHP 5, dutiliser les valeurs par référence et non par copie. Si vous modiez une valeur, elle sera alors modiée dans le tableau dorigine. 63 <?php $tab = array(1, 2, 3) ; foreach($tab as $valeur) { $valeur = $valeur – 1 ; } echo $tab[0] + $tab[1] + $tab[2] ; // Affiche 6 foreach($tab as &$valeur) { $valeur = $valeur – 1 ; } echo $tab[0] + $tab[1] + $tab[2] ; // Affiche 3 ?> <?php $tab = array(1, 2, 3) ; foreach($tab as $valeur) { $valeur = $valeur – 1 ; } echo $tab[0] + $tab[1] + $tab[2] ; // Affiche 6 foreach($tab as &$valeur) { $valeur = $valeur – 1 ; } echo $tab[0] + $tab[1] + $tab[2] ; // Affiche 3 ?>
64
Les instructions darrêt : Break Traitements de base Linstruction break permet de sortir dune structure conditionnelle telle que for, while, foreach ou switch. 64 <?php $i=1; while($i < 20) { echo 'affiché une fois'; break; echo 'jamais affiché'; $i++; } ?> <?php $i=1; while($i < 20) { echo 'affiché une fois'; break; echo 'jamais affiché'; $i++; } ?>
65
Les instructions darrêt : Continue Traitements de base Linstruction continue est utilisée dans une boucle an déluder les instructions de litération courante et donc pour passer directement à la suivante. 65 <?php for( $i=1 ; $i<=3 ; $i++) { // Naffiche le texte quune seule fois quand $i==3 if ($i !=3 ) continue ; echo 'On en est à la troisième itération' ; } ?> <?php for( $i=1 ; $i<=3 ; $i++) { // Naffiche le texte quune seule fois quand $i==3 if ($i !=3 ) continue ; echo 'On en est à la troisième itération' ; } ?>
66
Les fonctions utilisateurs Traitements de base 66 <?php function dire_texte($qui, $texte = 'Bonjour') { if(empty($qui)){ // Si $qui est vide, on retourne faux return FALSE; }else{ echo "$texte $qui"; // On affiche le texte return TRUE; // Fonction exécutée avec succès } ?> <?php function dire_texte($qui, $texte = 'Bonjour') { if(empty($qui)){ // Si $qui est vide, on retourne faux return FALSE; }else{ echo "$texte $qui"; // On affiche le texte return TRUE; // Fonction exécutée avec succès } ?> <?php // Déclaration de la fonction dire_texte() // Passage des deux paramètres dire_texte('cher phpeur', 'Bienvenue'); // Affiche "Bienvenue cher phpeur" // Utilisation de la valeur par défaut du deuxième paramètre dire_texte('cher phpeur'); // Affiche "Bonjour cher phpeur" ?> <?php // Déclaration de la fonction dire_texte() // Passage des deux paramètres dire_texte('cher phpeur', 'Bienvenue'); // Affiche "Bienvenue cher phpeur" // Utilisation de la valeur par défaut du deuxième paramètre dire_texte('cher phpeur'); // Affiche "Bonjour cher phpeur" ?>
67
Les fonctions utilisateurs : Visibilité des variables Traitements de base 67 <?php $param = 3 ; function decremente($valeur) { $valeur = $valeur -1 ; echo $param ; // Naffiche rien, $param nétant pas défini // dans le contexte de la fonction } decremente( $param ) ; echo $param ; // Affiche 3, la variable modifiée et la valeur // actuelle ne sont pas les mêmes echo $valeur ; // Naffiche rien, $valeur nétant pas défini // dans le contexte global ?> <?php $param = 3 ; function decremente($valeur) { $valeur = $valeur -1 ; echo $param ; // Naffiche rien, $param nétant pas défini // dans le contexte de la fonction } decremente( $param ) ; echo $param ; // Affiche 3, la variable modifiée et la valeur // actuelle ne sont pas les mêmes echo $valeur ; // Naffiche rien, $valeur nétant pas défini // dans le contexte global ?> Les variables extérieures à une fonction ne sont pas disponibles dans cette fonction et vice versa.
68
Les fonctions utilisateurs : Visibilité des variables Traitements de base 68 <?php $chaine = 'Nombre de camions : '; function ajoute_camion($mode='') { global $chaine; static $nb=0; $nb++; // On incrémente le nombre de camions if($mode == 'affiche') { echo $chaine.$nb; // On affiche le nombre de camions } ajoute_camion(); // nb == 1 ajoute_camion(); // nb == 2 ajoute_camion(); // nb == 3 ajoute_camion('affiche'); // Affiche Nombre de camions : 4 ?> <?php $chaine = 'Nombre de camions : '; function ajoute_camion($mode='') { global $chaine; static $nb=0; $nb++; // On incrémente le nombre de camions if($mode == 'affiche') { echo $chaine.$nb; // On affiche le nombre de camions } ajoute_camion(); // nb == 1 ajoute_camion(); // nb == 2 ajoute_camion(); // nb == 3 ajoute_camion('affiche'); // Affiche Nombre de camions : 4 ?> Il existe plusieurs niveaux de dénition de variable : Le niveau global permet à une variable dêtre visible dans la fonction et à lextérieur de la fonction. Le niveau static permet de dénir une variable locale à la fonction, qui persiste durant tout le temps dexécution du script. Cette variable conservera ses différentes valeurs à chaque nouvel appel de la fonction. Le niveau local, utilisé par défaut, permet de dénir une variable qui ne sera visible que dans la fonction en cours.
69
Les fonctions utilisateurs : Passage par copie ou référence Traitements de base 69 <?php function decremente($valeur) { $valeur = $valeur -1 ; } $param = 3 ; decremente( $param ); echo $param ; // Affiche 3 ?> <?php function decremente($valeur) { $valeur = $valeur -1 ; } $param = 3 ; decremente( $param ); echo $param ; // Affiche 3 ?> <?php function decremente(&$valeur) { $valeur = $valeur -1 ; } $param = 3 ; decremente( $param ) ; echo $param ; // Affiche 2 ?> <?php function decremente(&$valeur) { $valeur = $valeur -1 ; } $param = 3 ; decremente( $param ) ; echo $param ; // Affiche 2 ?>
70
Les fonctions utilisateurs : Retourner plusieurs valeurs Traitements de base 70 <?php function traduction() { $tab[] = 'nom' ; $tab[] = 'prenom' ; $tab[] = 'telephone' ; return $tab; } list($nom, $prenom, $telephone) = traduction() ; echo "$nom $prenom, $telephone" ; // Affiche nom prenom, telephone ?> <?php function traduction() { $tab[] = 'nom' ; $tab[] = 'prenom' ; $tab[] = 'telephone' ; return $tab; } list($nom, $prenom, $telephone) = traduction() ; echo "$nom $prenom, $telephone" ; // Affiche nom prenom, telephone ?>
71
Les fonctions utilisateurs : Nombre de paramètres indéni Traitements de base 71 <?php function indefinie() { echo 'Il y a eu ', func_num_args(), ' arguments : ' ; $tab = func_get_args(); echo implode(', ', $tab) ; } indefinie(0, 1, 2, 3,4, 5, 6) ; // Affiche : Il y a eu 7 arguments : 0, 1, 2, 3,4, 5, 6 ?> <?php function indefinie() { echo 'Il y a eu ', func_num_args(), ' arguments : ' ; $tab = func_get_args(); echo implode(', ', $tab) ; } indefinie(0, 1, 2, 3,4, 5, 6) ; // Affiche : Il y a eu 7 arguments : 0, 1, 2, 3,4, 5, 6 ?>
72
Les fonctions utilisateurs : Inclure des bibliothèques ou des chiers Traitements de base 72 PHP permet lutilisation de deux fonctions très simples et cependant très utiles qui permettent la réutilisation de code. En utilisant les fonctions require() ou include(), il est possible de charger des chiers dans un script PHP. Les inclusions peuvent par exemple servir à la gestion des paramètres de connexion à une base de données.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.