750 likes | 895 Views
Le langage PHP 5. Sommaire. Qu’est-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
E N D
Sommaire • Qu’est-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 fichiers • Gestion des flux et Flux de sortie PHP • Envoyer et recevoir des e-mails • Travailler avec une base de données
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
Qu’est-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 l’essentiel des protocoles et des formats qu’on peut rencontrer (TCP, HTTP, SMTP, LDAP, IMAP, POP, SSL, Soap, XSLT, XML, PDF, etc.).
Qu’est-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.
Qu’est-ce que PHP ? Historique • PHP/FI : créé en 1995 par RasmusLerdorf. 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 d’utiliser PHP/FI dans le cadre du développement d’une 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 d’une dizaine de mois de test et de débogage, la première version officielle de PHP 3.0 fut lancée en juin 1998.
Qu’est-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.
Qu’est-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 : • l’inté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 ; • l’intégration de la base de données SQLite ; • la simplification des principales tâches courantes. • l’apparition d’un socle commun pour la gestion des appels aux bases de données : PHP Data Object (PDO).
Qu’est-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
Qu’est-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 d’exploitation ; 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).
Qu’est-ce que PHP ? Fonctionnement de PHP
Qu’est-ce que PHP ? La machine virtuelle de PHP
Les structures de base • Dans l’exemple plus haut, PHP ajoute une chaîne de caractères au milieu du code HTML
Les structures de base Balises d’ouverture et de fermeture • Il est conseillé fortement l’utilisation unique de l’ouverture <?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 fichier de • configuration php.ini (directive short_tags pour <? et directive asp_tags pour <%).
Les structures de base Les commentaires • <?php • /* • Commentaires sur plusieurs lignes • exemple • */ • // Commentaires sur une ligne • echo "ceci n’est pas commenté" ; • ?>
Les structures de base Variables • 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. • PHP est un langage dit « de typage faible et dynamique ». • L’utilisation en lecture d’une variable non initialisée n’est pas un problème. Une variable inexistante renverra la valeur NULL
Les structures de base Variables • Les variables de PHP sont par défaut ce qu’on appelle des variables locales. Elles ne sont visibles et lisibles que dans le contexte où elles ont été créées. • Parfois, l’utilisation de variables globales dans les fonctions peut être utile. On peut alors utiliser le tableau $GLOBALS[]. Il s’agit d’un tableau associatif contenant des références sur toutes les variables globales actuellement définies. Ainsi, $GLOBALS['var'] représente la variable globale $var. • <?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 ', '.<br> Son auteur est '); • // Affiche Mon poème préféré est EL DESDICHADO. • // Son auteur est Gérard de Nerval • ?>
Les structures de base Variables • Une alternative à l’utilisation 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 d’un ou plusieurs noms de variables séparés par des virgules.. • <?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 • ?>
Les structures de base Test d’existence • La fonction isset() permet de tester si une variable existe. Dans le cas où l’on a précédemment affecté une valeur à $var, la fonction renverra la valeur TRUE. Dans le cas contraire, la fonction renverra la valeur FALSE. • <?php • $s = "test"; • echoisset($s); // Renvoie TRUE • echoisset($j); // Renvoie FALSE • ?>
Les structures de base Destruction • 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 n’existe plus. • <?php • $s = "test"; • echo isset($s); // Renvoie TRUE • unset($s); • echo isset($s); // Renvoie FALSE • ?>
Les structures de base Variables dynamiques • Les variables dynamiques (aussi dites variables variables) reposent sur le fait que le nom d’une variable peut lui-même être une variable. Voyons l’exemple ci-après pour appréhender la chose : • <?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 • ?>
Les structures de base Variables dynamiques • Il est aussi possible de référencer un nom dynamique en une seule opération grâce à des accolades : • <?php • $cd = "15 DH"; • $dvd = "30 DH"; • echo ${"dvd"}; // Affiche 30 DH • $produit = "dvd"; • echo ${$produit}; // Équivaut à echo $dvd et affiche donc 30 DH • ?>
Les structures de base Constantes • Le langage PHP définit les constantes à l’aide de la fonction define(). Elles ne peuvent plus par la suite recevoir d’autres valeurs. Par convention, on écrit les constantes en majuscules pour faciliter la relecture du code. • <?php • define("NOM", "Anaska"); • echo NOM; • ?> • Les constantes ne comportent pas de $ devant leur nom.
Les structures de base Constantes • Il est fréquent de construire des fichiers qui ne contiennent que des constantes, pour gérer des paramètres de configuration ou des traductions de manière centralisée. • <?php • // $Id: install.php,v 1.7 2003/02/12 11:35:36 okazuExp $ • // 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; • ...
Les structures de base Types de données • PHP dispose de quatre types de données simples : des booléens, des entiers, des nombres à virgule flottante et des chaînes de caractères. • <?php • echogettype("chaîne de caractères") ; • // Affiche string • ?>
Les structures de base Types de données • Il est aussi possible d’utiliser des fonctions d’accè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 • ?> • Les fonctions is_double() et is_float() vérifient si la valeur est un nombre à virgule flottante, les fonctions is_int() et is_integer() vérifient si la valeur est un nombre entier. Les fonctions is_boolean(), is_array(), is_null(), is_object() et is_resource() vérifient respectivement si la valeur est un booléen, un tableau, la valeur NULL, un objet ou une ressource interne.
Les structures de base Types de données • <?php • $nombre = 45; • $nb_negatif = -15 ; • $nb_hexa = 0x1A ; • ?> • <?php • $nombre = 3.14159; • $nombre = 5e7; • $nombre = 1.000; • ?>
Les structures de base Interprétation des variables • À l’intérieur d’une chaîne entre guillemets, les variables sont automatiquement remplacées par leur valeur. • <?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é ..."; • ?>
Les structures de base Le caractère d’échappement (ou protection) • <?php • $chaine = "Son livre "le premz" a déclenché la légende"; • // Renvoie un message d’erreur • ?> • Pour éviter cela, on protège les guillemets avec le caractère d’échappement, une barre oblique inverse (symbole \). Dans ce cas, l’interpréteur PHP ne considérera pas les guillemets comme un signe de fin puisqu’ils sont protégés. On aura donc : • <?php • $chaine = "Son livre \"le premz\" a déclenché la légende"; • ?>
Les structures de base Le caractère d’échappement (ou protection) • 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éfixant par une barre oblique inverse. C’est en particulier le cas avec $ pour éviter que ce qui suit ne soit interprété comme une variable à remplacer, et avec \ pour éviter qu’il soit associé au caractère suivant et ne le protège. • <?php • $variable = "PHP5 avancé"; • $chaine = "Le contenu de \$variable est \"$variable\"<br>"; • echo $chaine; • echo "Pour afficher un antislash (\\) il faut le protéger" ; • ?>
Les structures de base Le caractère d’échappement (ou protection) • D’autres 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).
Les structures de base Délimitation par apostrophes • Lorsqu’une 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. • <?php • echo 'texte<br>' ; // Affiche texte • echo '\ \n $variable<br>' ; // Affiche \ \n $variable • echo 'l\'apostrophe<br>' ; // Affiche l’apostrophe • echo 'antislash : \\<br>' ; // Affiche antislash : \ • ?>
Les structures de base Syntaxe heredoc • La syntaxe heredoc se comporte exactement comme une chaîne à guillemets, sans les guillemets. Cela signifie que vous n’avez 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. • <?php • $nom = 'Daspet'; • $texte =<<<icijemetscequejeveux • Exemple de chaîne • s'étalant sur • plusieurs lignes • avec la syntaxe heredoc<br> • Mon nom est contenu dans la variable \$nom : "$nom". <br> • Je peux écrire des caractères spéciaux : 'A' majuscule: \x41 • icijemetscequejeveux; • echo $texte; • ?>
Les structures de base Accéder à un caractère d’une chaîne • Il est possible d’accéder directement à un caractère dans une chaîne en le référençant par sa position. Il suffit alors d’ajouter la position entre accolades après le nom de la variable : • <?php • $chaine = "hello world" ; • echo $chaine{1} ; • // Affiche e • ?>
Les structures de base Les tableaux (array) • PHP permet deux types de tableaux : les tableaux indexés numériquement et les tableaux associatifs. Il n’est pas nécessaire de déclarer leur taille lors de la déclaration, elle est gérée par PHP. • <?php • $tableau = array( 12550, 15555, 12000, 21300, 25252, 20010, 8460); • $tab2 = array( $variable, "texte", 153, 56 ) ; • ?>
Les structures de base Les tableaux (array) • <?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 ; • ?>
Les structures de base Tableaux associatifs • Il associe une chaîne de caractères à un élément. On parle alors de tableau associatif ou de table de hachage. • <?php • $tab = array( • "prenom" => "Cyril" , • "ville" => "Paris" , • "travail" => "informatique" • ) ; • ?>
Les structures de base Tableaux associatifs • Il associe une chaîne de caractères à un élément. On parle alors de tableau associatif ou de table de hachage. • <?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 "<br>Son téléphone est le "; • echo $tableau['telephone']; • ?>
Les structures de base Tableaux multidimensionnels • Il est également possible de créer des tableaux à plusieurs dimensions pour stocker, par exemple, une matrice. • <?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 = array( • array(5,4), • array(2,3), • array(8,2) • ); • ?>
Les structures de base Transtypage • Quand PHP convertit un texte en nombre, il regarde en début de la chaîne de caractères s’il trouve un nombre connu. Si c’est le cas, il fait une conversion directe : • 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 flottante 0 ; • une chaîne de caractères contenant uniquement le nombre 0 ; • un tableau vide ; • un objet avec aucun champ défini. • Toutes les autres données seront considérées comme « vraies ».
Les structures de base Forcer une conversion • 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. • <?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 • ?>
Les structures de base Forcer une conversion • 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 flottante. • <?php • echo gettype( "12" ) ; // Affiche string • echo gettype( intval( "12" ) ) ; // Affiche integer • echo gettype( strval( 12 ) ) ; // Affiche string • ?>
Traitements de base Opérateurs d’affectation • L’opérateur d’affectation est le signe égal. La variable avant le symbole égal (=) prend la valeur spécifiée après. • <?php • $j = $i = 5 ; • // Est comme : • $j = ($i = 5) ; • // Équivalent à • $j = 5 ; • echo ($i = 5) ; // Affiche 5 • ?>
Traitements de base Affectation par copie et références • Il est possible, de créer un lien fort entre deux variables en ajoutant un & juste derrière le signe d’affectation. Dans ce cas, on dit que les deux noms référencent 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 • ?>
Traitements de base Affectation par copie et références • Pour effacer une référence, il vous suffit d’utiliser 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. • <?php • $origine = 1 ; • $reference =& $origine ; • $origine = 2 ; • echo 'Valeur de $reference : ', $reference, '<br>'; • // Affiche 2 • unset($origine) ; • echo 'Valeur de $origine : ', $origine, '<br>'; • // N’affiche plus rien • echo 'Valeur de $reference : ', $reference, '<br>'; • // Affiche toujours la valeur 2 • ?>
Traitements de base Opérateurs arithmétiques
Traitements de base L’utilité du modulo (%) • 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, d’afficher une ligne sur deux d’un tableau HTML avec une couleur de fond différente : • <?php • $i = 0; • echo '<table width="100">'; • while ($i < 10){ • if (($i % 2)==0){ // Cas d’une ligne paire • echo "<tr><td bgcolor=#FFFFFF align=center>$i</td></tr>"; • } else { // Cas d’une ligne impaire • echo "<tr><td bgcolor=#CCCCCC align=center>$i</td></tr>"; • } • $i++; • } • echo '</table>'; • ?>
Traitements de base Incrémentation
Traitements de base Opérateurs combinés • <?php • $a = 10; • $b = 7; • $a *= 5; // $a est égal à 50 • $b += $a; // $b est égal à 57 • ?>