1. Sommaire Quest-ce que PHP ? Les structures de base Traitements de base Traitements de chaînes Utilisation des tableaux Fonctions usuelles Formulaires.

Slides:



Advertisements
Présentations similaires
Un environnement de développement éducatif
Advertisements

Active Directory Windows 2003 Server
Produit Gammes Nomenclatures Modules Techniques Prix de Revient Prix de Vente Modules Techniques Client Marges Mise en route Temps Unitaire Prix (Ex:
Novembre 2005 – Michel Desconnets PHP : théorie Objectif : introduire les concepts globaux permettant d'aborder la programmation en PHP.
Nos Partenaires Rencontres ASP.NET : Développement Rapide dApplications Web.
Portée des variables VBA & Excel
Xavier Blanc Web Services Xavier Blanc
Proposition de recherches sur ABI (Pro Quest) Lise Herzhaft (Urfist de Lyon) et MH Prévoteau (Bibliothèque Université Paris 2) Mise en forme par Nolwenn.
Serveurs web pour JSP et Servlets
JXDVDTEK – Une DVDthèque en Java et XML
Exposé de Système - Informatique et Réseau
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
HTML Les types de balises
TP 3-4 BD21.
10:59:29 Programmation Web Programmation Web : PHP Jérôme CUTRONA
Conception d’une application de gestion de fiches études
14/06/07 Préparé par: Ing. Rodrigue Osirus (509) / , - Programmation Web coté Server avec.
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Oct.-2000DESS IIDEE © B. BAH 1 ASP Caractéristiques dun fichier ASP Son extension : « *.asp » La balise: Son indépendance vis à vis de toute plate–forme,
Active Directory Windows 2003 Server
Développement d’applications web
CPI/BTS 2 Programmation Web Introduction au PHP
Le langage PHP 5.
Serveurs Partagés Oracle
Ecole Supérieure Privée de ingénierie et de technologie année universitaire :2013/2014 Cross-Plateform Cours JavaScript.
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
L’utilisation des bases de données
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
SIDENA BTS IRIS Session 2008 CARME Arnaud.
SSO : Single Sign On.
1 PHP 1.Langage PHP 1.1. Types de base, variables et constantes 1.2. Opérateurs et expressions 1.3. Instructions 1.4. Fonctions 2.Accès aux bases de données:
Web dynamique PhP + MySQL AYARI Mejdi 2006
L3 Module Libre Année universitaire Initiation à la Bioinformatique Jean-Michel RICHER.
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Projet de Master première année 2007 / 2008
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
NORMALISATION DES LANGAGES DE PROGRAMMATION des Automates Programmables Industriels CEI Jean-Jacques DUMÉRY -1-
2 Développer, tester et déployer un site web avec WebMatrix (RIA101) Christine Dubois 9 février 2011.
Initiation au web dynamique
NORMALISATION DES LANGAGES DE PROGRAMMATION des Automates Programmables Industriels CEI
1 GPA435 Systèmes d’exploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 8 Filtres UNIX.
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
Animateur : Med HAIJOUBI
PHP 1° PARTIE : LES BASES © BTS IRIS 2002 [tv] Présentation Historique
PHP & My SQL.
Introduction au langage PHP Licence Pro Cours Internet / Intranet Utilité Historique Exemples Fonctions PHP Classes.
Département Technologie de l’Information et de la Communication
Gérer la sécurité des mots de passe et les ressources
JavaScript.
Cours de programmation web
Réalisé par : Mr IRZIM Hédi Mr JRAD Firas
Créer des packages.
PHP & MySQL Master1 ICD Claire Jacquot Emilie Hot le 24/10/2006.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
PostgreSQL – Présentation
Les types composés Les enregistrements.
G.KEMBELLEC - UP81 Master 2 THYP Cas pratique d’utilisation De simpleXML Un lecteur de RSS Novembre 2009.
PHP 6° PARTIE : LES SESSIONS 1.Introduction 2.Identificateur de session 3.Variables de session 4.Client / Serveur 5.Principe 6.Ouverture de session 7.Enregistrement.
Module : Pages Web Dynamiques (Production Électronique Avancée)
Programmation Web : PHP
 Formulaires HTML : traiter les entrées utilisateur
PHP SpeedBerg Templates EPFL PHP IIème Conférence des WebMasters EPFL 5/12/2001 Tuan Lam E-PFL
Initiation au web dynamique Licence Professionnelle.
EPREUVE E6 : PARCOURS DE PROFESSIONNALISATION
ANNEE SCOLAIRE 2005 / FONCTIONNEMENT DU RESEAU DU COLLEGE Tous les ordinateurs du collèges, portables et fixes sont dans un réseau. Cela signifie.
Développement et design Web Awaves academy Stockholm 2006.
Introduction à PHP TOURNADRE Guillaume - Informatique Réseaux URL :
Séance /10/2005 CSS et Dreamweaver. CSS : principes Cascading Style Sheet = feuille de style en cascade Norme du W3C :
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
TWP Toolkit Formation 21/10/2009.
Transcription de la présentation:

1

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 s Travailler avec une base de données 2

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

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

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 développeurs courant

Quest-ce que PHP ? Historique PHP/FI : créé en 1995 par Rasmus Lerdorf. La version 2.0 fut publié officiellement en novembre 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

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

Quest-ce que PHP ? Historique PHP 5 : La première version stable de PHP 5 a fait son apparition en 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

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

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

Quest-ce que PHP ? 11

Quest-ce que PHP ? 12 Fonctionnement de PHP

Quest-ce que PHP ? 13 La machine virtuelle de PHP

Les structures de base Dans lexemple plus haut, PHP ajoute une chaîne de caractères au milieu du code HTML 14

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

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

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

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 ?>

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 ?>

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 ?>

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 ?>

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 ?>

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 ?>

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.

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 /02/12 11:35:36 okazu Exp $ // Support Francophone de Xoops ( 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 /02/12 11:35:36 okazu Exp $ // Support Francophone de Xoops ( 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;...

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 ?>

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.

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 = ; $nombre = 5e7; $nombre = 1.000; ?> <?php $nombre = ; $nombre = 5e7; $nombre = 1.000; ?>

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é..."; ?>

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"; ?>

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" ; ?>

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

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 : \ ?>

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; ?>

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 ?>

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 ) ; ?>

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 ; ?>

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" ) ; ?>

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'] = " "; $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'] = " "; $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']; ?>

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) ); ?>

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 echo 1 + "3 petits cochons" ; // Affiche 4 echo 1 + "petits cochons" ; // Affiche 1 echo "3" + 1 ; // Affiche 4 echo 1 + "-1.3e3" ; // Affiche 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 ».

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 ?>

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 ?>

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 ?>

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 ?>

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 ?>

Opérateurs arithmétiques Traitements de base 47

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 * 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 ' '; ?>

Incrémentation Traitements de base 49

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 ?>

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'; ?>

Opérateurs de comparaison Traitements de base 52

Opérateurs logiques Traitements de base 53

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 ?>

Priorités entre opérateurs Traitements de base 55

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'; } ?>

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'; } ?>

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 !'; } ?>

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 "; } ?>

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); ?>

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 -"; } ?>

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"; } ?>

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 ?>

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++; } ?>

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' ; } ?>

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" ?>

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.

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.

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 ?>

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 ?>

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 ?>

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.