ecole esiam1 langage php : chapitre 1 pr. aissam mesrar

77
Ecole ESIAM Ecole ESIAM 1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Upload: lucie-villain

Post on 03-Apr-2015

121 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 11

Langage PHP : Chapitre 1

Pr. Aissam MESRAR

Page 2: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 22

IntroductionEléments de base du langage PHPFonctionsTableauxFormulairesPHP et MySQLCookiesSessionsExpressions régulières

Plan général du cours

Page 3: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 33

PlanPlan

IntroductionIntroduction Eléments de base du langage PHPEléments de base du langage PHP FonctionsFonctions

Page 4: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 44

IntroductionIntroduction

Page 5: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 55

Schéma statique du webSchéma statique du web

P1

Pn

P3

P2

RéseauRéseau

ServeuServeurr ClienClien

tt

P2

Demande page 2

Le serveur abrite un certain nombre de pages web statiques que les clients peuvent consulter à n’importe quel moment

Le résultat de consultation d’une page sera le même chez tous les clients et à tout moment

Page 6: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 66

Limites du Schéma statique du Limites du Schéma statique du webweb

P1

Pn

P3

P2

RéseauRéseau

ServeuServeurr ClienClien

tt

Peut-on réaliser un site web qui diffuse les infos instantanées avec des pages web statiques ? Peut–on réaliser un site web qui donne les prévisions météorologique dans toutes les villes du monde ?

Requête : Météo de la ville de Fès le 10 Mars 2006 à 15h

Page 7: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 77

Schéma statique non convenableSchéma statique non convenable Impossible de prévoir des pages statiques instantanées, Impossible de prévoir des pages statiques instantanées, On ne sait pas à quel instant l’info sera mise à jour, c’est On ne sait pas à quel instant l’info sera mise à jour, c’est

aléatoire.aléatoire. Difficile de prévoir des pages web pour chaque ville et à Difficile de prévoir des pages web pour chaque ville et à

n’importe quelle daten’importe quelle date

Web dynamique et interactif

Limites du Schéma statique du Limites du Schéma statique du webweb

Page 8: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 88

Web dynamique et interactif Web dynamique et interactif

P1

Pn

P3

P2

RéseauRéseau

ServeuServeurr ClienClien

tt

P2

Demande page 2

Les pages web sur le serveur sont dynamiques

Le résultat de consultation d’une page peut changer d’un moment à l’autre

pour le même client ou clients différents

La mise à jour de la page ne dépend pas des clients

Le résultat de consultation d’une page peut changer selon les critères du client (formulaire)

Après un moment

Page 9: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 99

Web dynamique et interactifWeb dynamique et interactif

Moteur PHP Moteur PHP Page web générée sur le serveur à la demandePage web générée sur le serveur à la demande

Critères du client (formulaires,…)Critères du client (formulaires,…) Interaction avec des fichiers ou des Bases de DonnéesInteraction avec des fichiers ou des Bases de Données

Page 10: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 1010

Web dynamique et interactif Web dynamique et interactif

P1.html

RéseauRéseau

ServeuServeurr ClienClien

ttDemande p1.html

La page p1.html a été envoyée au client sans le moindre traitement

P2.php

P3.php

Pn.html

P1.html

Moteur PHP

Page 11: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 1111

Web dynamique et interactif Web dynamique et interactif

P1.html

RéseauRéseau

ServeuServeurr ClienClien

ttDemande p2.phpMoteur PHP

P2.php

P3.php

Pn.html

P2.html

P2.html

La page p2.php est traitée (interprétée) par le Moteur PHP

Le résultat de ce traitement (p2.html) est envoyé au client

La page p2.html n’est pas stockée chez le serveur

Page 12: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 1212

Web dynamique et interactifWeb dynamique et interactif

Autres moteursAutres moteurs CGI Common Gateway InterfaceCGI Common Gateway Interface ASP Active Server PagesASP Active Server Pages JSP Java Server PagesJSP Java Server Pages CFM Cold Fusion MacromédiaCFM Cold Fusion Macromédia PERLPERL

Page 13: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 1313

Langages compilés/InterprétésLangages compilés/Interprétés

Langages interprétés Langages interprétés PHP, Perl, Python, JAVA, JavaScriptPHP, Perl, Python, JAVA, JavaScript

Langages compilés Langages compilés C, C++, JAVA, PascalC, C++, JAVA, Pascal

Page 14: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 1414

Langages compilés/InterprétésLangages compilés/Interprétés

Langages compilés Langages compilés AvantagesAvantages

Conversion en binaire : 1e seule Conversion en binaire : 1e seule foisfois

Plus rapidePlus rapide Inconvénients Inconvénients

Incompatibilité / plates_formesIncompatibilité / plates_formes

Page 15: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 1515

Langages compilés/InterprétésLangages compilés/Interprétés

Langages interprétés Langages interprétés AvantagesAvantages

Portabilité Portabilité InconvénientsInconvénients

Relativement lentRelativement lent Code source divulguéCode source divulgué

ScriptScript : un programme écrit : un programme écrit dans un langage interprétédans un langage interprété

Page 16: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 1616

Domaines d’application des Domaines d’application des langageslangages

PHP, ASP, JSP,CFM : WEBPHP, ASP, JSP,CFM : WEB

C : Applications SystèmesC : Applications Systèmes

JAVA : Applications pour systèmes JAVA : Applications pour systèmes

embarqués (tél portable, carte à puce)embarqués (tél portable, carte à puce)

PERL : Administration systèmePERL : Administration système

C++ : Applications avec interfaces C++ : Applications avec interfaces

graphiquesgraphiques

Page 17: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 1717

Performances des langagesPerformances des langages

Un langage est performant dans son Un langage est performant dans son

domaine d’applicationdomaine d’application..

Pour un même PB : Pour un même PB :

10 lignes de codes ( langage i) 10 lignes de codes ( langage i) 300 lignes 300 lignes

(langage j)(langage j)

Page 18: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 1818

PHP : PHP : Raisons de succèsRaisons de succès

Langage interprété conçu dès son origine Langage interprété conçu dès son origine pour le webpour le web

Intégré avec l’HTMLIntégré avec l’HTML Dans le même fichier, on peut trouver du code Dans le même fichier, on peut trouver du code

HTML et PHPHTML et PHP

Page 19: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 1919

PHP : PHP : Raisons de succèsRaisons de succès

PerformancesPerformances

RapiditéRapidité

StabilitéStabilité : ne plante pas : ne plante pas

ScalabilitéScalabilité : comportement normal avec un nombre : comportement normal avec un nombre

important de visiteursimportant de visiteurs

SécuritéSécurité : pas de défaillance : pas de défaillance

Sécurité de PHP Sécurité de PHP Sécurité d’application écrite en PHP Sécurité d’application écrite en PHP

Page 20: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 2020

PHP : PHP : Raisons de succèsRaisons de succès

Open source Open source Projet planétaire (meilleurs compétences)Projet planétaire (meilleurs compétences) GratuitGratuit Bibliothèque riche de scripts sources gratuits sur le webBibliothèque riche de scripts sources gratuits sur le web

PortabilitéPortabilité Toutes les plates-formes (matérielles et logicielles) disposent Toutes les plates-formes (matérielles et logicielles) disposent

d’interpréteur PHPd’interpréteur PHP Serveur web : Apache, IIS, AOL server, RoxenServeur web : Apache, IIS, AOL server, Roxen Environnement préféré : Environnement préféré : Apache/LinuxApache/Linux

Apache : le plus utilisé (yahoo, google)Apache : le plus utilisé (yahoo, google) Linux : deuxième système d’exploitation après WindowsLinux : deuxième système d’exploitation après Windows

Page 21: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 2121

Concurrents de PHP : ASP Concurrents de PHP : ASP

AvantagesAvantages Compatibilité avec les outils Microsoft Compatibilité avec les outils Microsoft

(IIS,Frontpage, Visuel Studio, Access, SQL Server)(IIS,Frontpage, Visuel Studio, Access, SQL Server) Outils avec interface simple : Outils avec interface simple : Pas besoin d’être Pas besoin d’être

ingénieur système pour administrer le serveur webingénieur système pour administrer le serveur web

InconvénientsInconvénients Limité au serveur IISLimité au serveur IIS IIS : IIS : Pb de sécuritéPb de sécurité Logiciel payant, Logiciel payant, de plus, il faut acheter tous les outils de plus, il faut acheter tous les outils

accompagnantsaccompagnants

Page 22: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 2222

Concurrents de PHP : JSP Concurrents de PHP : JSP

AvantagesAvantages Utilise un langage totalement Orienté ObjetsUtilise un langage totalement Orienté Objets Portabilité (JAVA)Portabilité (JAVA) Meilleure sécuritéMeilleure sécurité

InconvénientsInconvénients Relativement difficile (il faut maîtriser Java)Relativement difficile (il faut maîtriser Java) Nécessite beaucoup de ressources (JVM )Nécessite beaucoup de ressources (JVM )

Page 23: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 2323

Concurrents de Concurrents de PHP : PHP : Cold Fusion Cold Fusion MacromédiaMacromédia

AvantagesAvantages Environnement de développement central intégrant tous Environnement de développement central intégrant tous

les outilsles outils Interface graphique simple : facile pour les débutantsInterface graphique simple : facile pour les débutants

InconvénientsInconvénients Langage lourd, mal conçu, évolue lentement Langage lourd, mal conçu, évolue lentement ne ne

convient pas aux développeurs initiésconvient pas aux développeurs initiés Hébergeurs CFM : Pas nombreux et payantsHébergeurs CFM : Pas nombreux et payants Environnement payantEnvironnement payant

Page 24: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 2424

Concurrents de PHP : PERLConcurrents de PHP : PERL

AvantagesAvantages PERL : vieux PERL : vieux bibliothèque d’extension très riche bibliothèque d’extension très riche Open source : langage gratuitOpen source : langage gratuit

InconvénientsInconvénients Le web n’était pas l’objectif du PERL à l’origineLe web n’était pas l’objectif du PERL à l’origine Installation sur machine cliente relativement Installation sur machine cliente relativement

compliquéecompliquée

Page 25: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 2525

PHP : HistoriquePHP : Historique

Créé en 1994 par Rasmus Lerdorf pour Créé en 1994 par Rasmus Lerdorf pour conserver la trace des utilisateurs venus conserver la trace des utilisateurs venus consulter son CVconsulter son CV PHP signifie alors PHP signifie alors Personal Home PagePersonal Home Page

Version 2.0 en 1995Version 2.0 en 1995 Récupération de données soumises par Récupération de données soumises par

FormulaireFormulaire Interfaçage avec les SGBDInterfaçage avec les SGBD Possibilité d'effectuer des calculs Possibilité d'effectuer des calculs

mathématiquesmathématiques

Page 26: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 2626

PHP : HistoriquePHP : Historique

1996 : 15 000 sites Web1996 : 15 000 sites Web 19971997

moteur Zend : + de performances, + de moteur Zend : + de performances, + de bibliothèquesbibliothèques

Zend provient des noms de ses concepteurs : AZend provient des noms de ses concepteurs : Andndi i Gutmans et Gutmans et ZeZeev Suraski ev Suraski

50 000 sites Web50 000 sites Web 19981998

version 3.0 : + d'extensions, + d'interfaçage,version 3.0 : + d'extensions, + d'interfaçage, syntaxe objetsyntaxe objet PHP signifie PHP signifie : PHP Hypertext Prepocessor: PHP Hypertext Prepocessor

Page 27: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 2727

PHP : HistoriquePHP : Historique

1999 : 100 000 sites Web1999 : 100 000 sites Web 2000 : version 4.0, basée sur le 2000 : version 4.0, basée sur le

moteur Zend (+de sécurité, + de moteur Zend (+de sécurité, + de performances)performances)

2001 : 5 100 000 sites Web2001 : 5 100 000 sites Web 2003 : versions 4.3.4 et 5.0B22003 : versions 4.3.4 et 5.0B2

On estime que 20% des domaines On estime que 20% des domaines d'Internet utilisent PHPd'Internet utilisent PHP

20052005 : version 5 Orienté Objet: version 5 Orienté Objet

Page 28: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 2828

Eléments de base de PHPEléments de base de PHP

Page 29: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 2929

Structure d’un script PHPStructure d’un script PHP

Code PHP entre les balises <?php et ?> Code PHP entre les balises <?php et ?> Syntaxe très proche du langage C et C++Syntaxe très proche du langage C et C++ Sensible à la casseSensible à la casse

fait la différence entre minuscule et majusculefait la différence entre minuscule et majuscule Chaque instruction se termine par un point virgule : Chaque instruction se termine par un point virgule : ;;

Exemple : simple.phpExemple : simple.php<?php<?phpprint "Mon premier essai avec PHP"print "Mon premier essai avec PHP";;?>?>print est une fonction prédéfinie qui affiche son print est une fonction prédéfinie qui affiche son

paramètreparamètre

Page 30: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 3030

Génération de page à partir Génération de page à partir d’un scriptd’un script

<?php

….

……….

……..

?>

Moteur PHP

<html>

….

……….

……..

</html>

Page 31: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 3131

Structure d’un fichier PHPStructure d’un fichier PHP

Possibilité d’intégrer un script avec Possibilité d’intégrer un script avec du code HTML dans le même fichier du code HTML dans le même fichier (extension .php, .php3, .phtml)(extension .php, .php3, .phtml)

Code HTML<?php….……….……..?>Code HTML

Moteur PHP

<html>

….

……….

……..

</html>

Page 32: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 3232

Structure d’un fichier PHPStructure d’un fichier PHP

Possibilité d’intégrer plusieurs scripts Possibilité d’intégrer plusieurs scripts dans le même fichierdans le même fichier

Exemple : Exemple : plusieurs_scripts.phpplusieurs_scripts.php

Page 33: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 3333

CommentaireCommentaire

Trois manières d’écrire le Trois manières d’écrire le

commentairecommentaire // Commentaire de ligne// Commentaire de ligne #Commentaire de ligne#Commentaire de ligne /* commentaire sur /* commentaire sur plusieurs lignes */plusieurs lignes */

Page 34: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 3434

Types de donnéesTypes de données

Types de base prédéfinis :Types de base prédéfinis : NumériqueNumérique

Entier Entier

RéelsRéels

Chaînes de caractèresChaînes de caractères

BooléenBooléen

Défini implicitement avec des expressions numériques Défini implicitement avec des expressions numériques

ou/et des chaînes de caractèresou/et des chaînes de caractères

Page 35: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 3535

Types de donnéesTypes de données

Types NumériquesTypes Numériques Entiers Entiers

Exemples : Exemples : 4, -6, 1024, -6, 102

Réels Réels Exemples :Exemples :

10.25, -14.36910.25, -14.369

Opérateurs Opérateurs Opérateurs arithmétiques : Opérateurs arithmétiques :

+,-,*,/,%+,-,*,/,% Opérateurs d’incrémentation/ decrémentation : Opérateurs d’incrémentation/ decrémentation :

++,--++,--

Page 36: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 3636

Types de donnéesTypes de données

Chaînes de caractèresChaînes de caractères Suite de caractères délimitée par " " ou ‘’Suite de caractères délimitée par " " ou ‘’

Exemples : Exemples : "bonjour" ou ‘bonjour’"bonjour" ou ‘bonjour’

Concaténation des chaînes de caractère : Concaténation des chaînes de caractère : opérateur opérateur ..

"bonjour " "bonjour " .. "ami" équivalent à "bonjour ami" "ami" équivalent à "bonjour ami"

Page 37: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 3737

Types de donnéesTypes de données

Type booléenType booléen N’est pas défini explicitementN’est pas défini explicitement Cas particulier des types numériques et chaînes de Cas particulier des types numériques et chaînes de

caractèrescaractères Convention Convention

Vrai : ≠ de 0 (numérique) ou non vide (chaîne de caractère)Vrai : ≠ de 0 (numérique) ou non vide (chaîne de caractère) Faux : =0 (numérique) ou vide (chaîne d caractère)Faux : =0 (numérique) ou vide (chaîne d caractère)

OpérateursOpérateurs Opérateurs de comparaisonOpérateurs de comparaison

==, !=,>,>=,<,<===, !=,>,>=,<,<= Opérateurs logiquesOpérateurs logiques

&& , and, || , or, && , and, || , or,

Page 38: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 3838

IdentifiantsIdentifiants

Identifiant de variables ou de constantes Identifiant de variables ou de constantes est une suite de caractères qui :est une suite de caractères qui : Ne contient pas d’espaceNe contient pas d’espace Commence par une lettre ou le caractère Commence par une lettre ou le caractère

souligné ‘_’souligné ‘_’ Différent des mots clésDifférent des mots clés

ExemplesExemples Nom, n1, _prix, …Nom, n1, _prix, … 2n, prix ttc, define2n, prix ttc, define

Page 39: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 3939

ConstantesConstantes

Objets dont la valeur ne change pas Objets dont la valeur ne change pas au cours de l’exécution du scriptau cours de l’exécution du script

DéclarationDéclaration define("nom_constante" ,"valeur");define("nom_constante" ,"valeur");

ExemplesExemples define("PI",3.14);define("PI",3.14); define("Langue","Français");define("Langue","Français");

Page 40: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 4040

VariablesVariables

Pas besoin de déclaration explicitePas besoin de déclaration explicite La variable est précédée par le caractère La variable est précédée par le caractère

‘$’ lors de l’utilisation‘$’ lors de l’utilisation

Exemple Exemple $a=10; print($a);$a=10; print($a);

Page 41: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 4141

VariablesVariables

La variable peut changer de type au cours La variable peut changer de type au cours de l’exécutionde l’exécution Exemple: Exemple:

$a=10;$a=10;

print ($a);print ($a);

$a="bonjour";$a="bonjour";

Print($a);Print($a);

Tester l’initialisation d’une variableTester l’initialisation d’une variable Fonctions isset() et empty()Fonctions isset() et empty()

Page 42: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 4242

ExpressionsExpressions

Expressions numériquesExpressions numériques

Exemple Exemple $a=10;$a=10;

$x=2.67;$x=2.67;

$b=$a+5;$b=$a+5;

$b++;$b++;

$c=($a+$b)*$x;$c=($a+$b)*$x;

Page 43: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 4343

ExpressionsExpressions

Expressions de chaînes de caractèresExpressions de chaînes de caractères

Différence entre " " et ’ ’: Différence entre " " et ’ ’: entre " " les variables seront remplacées par leurs entre " " les variables seront remplacées par leurs

valeursvaleurs $b=" ami" ; $a="bonjour $b" ; $b=" ami" ; $a="bonjour $b" ;

$a sera bonjour ami$a sera bonjour ami Entre ’ ’ les variables dans la chaîne ne sont pas Entre ’ ’ les variables dans la chaîne ne sont pas

interprétées interprétées $b=" ami" ; $a=’bonjour $b’ ; $b=" ami" ; $a=’bonjour $b’ ;

$a sera $a sera bonjour $bbonjour $b

Page 44: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 4444

ExpressionsExpressions

Expressions de chaînes de caractèresExpressions de chaînes de caractères

Concaténation des chaînes : opérateur point ‘.’Concaténation des chaînes : opérateur point ‘.’ ExempleExemple

$a="bonjour " ; $b=" ami " ; $a="bonjour " ; $b=" ami " ; $c=$a.$b;$c=$a.$b; $c sera "bonjour ami"$c sera "bonjour ami"

Page 45: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 4545

Tests

Page 46: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 4646

TestTest

Forme 1Forme 1 Permet de choisir entre deux alternatives selon Permet de choisir entre deux alternatives selon

la valeur d’une expression logiquela valeur d’une expression logique NotationNotation

ifif(exp_log)(exp_log)bloc1bloc1

elseelsebloc2bloc2

Où bloc1 et bloc2 sont des suites d’instructionsOù bloc1 et bloc2 sont des suites d’instructions Exemple : test.phpExemple : test.php

Page 47: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 4747

TestTest

Forme 2Forme 2 Permet d’exécuter une seule alternative Permet d’exécuter une seule alternative

si une condition est vérifiée. Dans ce cas si une condition est vérifiée. Dans ce cas la deuxième alternative n’existe pas.la deuxième alternative n’existe pas.

NotationNotationif(exp_log)if(exp_log)

bloc1bloc1

Page 48: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 4848

TestTest

Imbrication de if/elseImbrication de if/elseif(exp1)if(exp1)

if(exp11)if(exp11)bloc11bloc11

elseelsebloc12bloc12

elseelseif(exp21)if(exp21)

bloc21bloc21

elseelsebloc22bloc22

Page 49: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 4949

TestTest

Imbrication de if/else : 2Imbrication de if/else : 2èmeème notation notationif(exp1)if(exp1)

if(exp11)if(exp11)bloc11bloc11

elseelsebloc12bloc12

elseifelseif(exp21)(exp21)bloc21bloc21

elseelsebloc22bloc22

Page 50: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 5050

Choix multipleChoix multiple Permet de choisir une alternative parmi Permet de choisir une alternative parmi

plusieursplusieurs C’est la généralisation du testC’est la généralisation du test NotationNotation

switchswitch(exp)(exp){{casecase val1 : bloc1; val1 : bloc1;casecase val2 : bloc2; val2 : bloc2;……casecase valn : blocn; valn : blocn;[default[default : bloc_dfaut; : bloc_dfaut;]]}}

Un blocUn blocii est exécuté si exp == val est exécuté si exp == vali i default est optionneldefault est optionnel Exemple :switch.phpExemple :switch.php

Page 51: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 5151

Les bouclesLes boucles

Page 52: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 5252

Les bouclesLes boucles

Permettent de répéter l’exécution d’un Permettent de répéter l’exécution d’un ensemble d’instructions plusieurs foisensemble d’instructions plusieurs fois

Trois types de bouclesTrois types de boucles

whilewhile

do .. whiledo .. while

forfor

Page 53: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 5353

Les bouclesLes boucles

Boucle whileBoucle while Notation :Notation :

while (exp_log)while (exp_log)

{{

BlocBloc

}}

Page 54: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 5454

Les bouclesLes boucles

Boucle do … whileBoucle do … while Notation :Notation :

dodo

{{

BlocBloc

} }

while (exp_log);while (exp_log);

Page 55: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 5555

Les bouclesLes boucles

Boucle forBoucle for Notation :Notation :

for(init;exp_log;int_fin)for(init;exp_log;int_fin)

{{

BlocBloc

} }

Page 56: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 5656

Les bouclesLes boucles

Exemple : boucle.phpExemple : boucle.php<?php<?php

$s=0;$s=0;

for($i=1;$i<=100;$i++)for($i=1;$i<=100;$i++)

$s=$s+$i;$s=$s+$i;

print("<br> la somme des entiers de 1 à 100 est: $s");print("<br> la somme des entiers de 1 à 100 est: $s");

?>?>

Page 57: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 5757

Les bouclesLes boucles

Instruction break/continueInstruction break/continue break break

Quitte la boucle immédiatementQuitte la boucle immédiatement Avortement de la boucleAvortement de la boucle

continuecontinue Arrête l’itération en cours et passe à l’itération Arrête l’itération en cours et passe à l’itération

suivantesuivante Avortement de l’itération en coursAvortement de l’itération en cours

Toutes les deux doivent être protégées par Toutes les deux doivent être protégées par une conditionune condition

Page 58: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 5858

Fonctions

Page 59: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 5959

Pourquoi les fonctions ?Pourquoi les fonctions ?

ModularitéModularitéDiviser le problème à résoudre en petits Pbs et Diviser le problème à résoudre en petits Pbs et résoudre chacun d’eux par un module (facile à résoudre chacun d’eux par un module (facile à composer), appelé composer), appelé fonctionfonction pour la plupart des pour la plupart des langageslangages

RéutilisabilitéRéutilisabilitéPossibilité de réutiliser certaines fonctions dans Possibilité de réutiliser certaines fonctions dans un autre problèmeun autre problème

MAJ facileMAJ facileLa mise à jour d’une fonction n’affecte pas les La mise à jour d’une fonction n’affecte pas les autres fonctionsautres fonctions

Page 60: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 6060

FonctionsFonctions DéclarationDéclaration

function nom_fonction($param1,$param2,…)function nom_fonction($param1,$param2,…){{Corps de la fonctionCorps de la fonction}}

$Param1, $param2, … sont dits paramètres $Param1, $param2, … sont dits paramètres formels de la fonctionformels de la fonction

Appel de la fonctionAppel de la fonctionnom_fonction($eff1,$eff2,…)nom_fonction($eff1,$eff2,…)

$eff1,$eff2,… sont dits paramètres effectifs$eff1,$eff2,… sont dits paramètres effectifs

Page 61: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 6161

FonctionsFonctions Fonction qui retourne une valeurFonction qui retourne une valeur

L’instruction return dans le corps de la fonction L’instruction return dans le corps de la fonction permet de retourner une valeur et de quitter la permet de retourner une valeur et de quitter la fonction.fonction.

function nom_fonction($param1,$param2,…)function nom_fonction($param1,$param2,…){{Corps de la fonctionCorps de la fonctionreturn($resultat);return($resultat);}}

$Param1, $param2, … sont dits paramètres formels de $Param1, $param2, … sont dits paramètres formels de la fonctionla fonction

Appel de la fonctionAppel de la fonction$r = $r = nom_fonction($eff1,$eff2,…);nom_fonction($eff1,$eff2,…);

Page 62: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 6262

FonctionsFonctions Exemple : fonction1.php: fonction1.php fonction factoriellefonction factorielle

<?php<?phpfunction fact($a)function fact($a){{$f=1;$f=1;for($i=1;$i<=$a;$i++)for($i=1;$i<=$a;$i++)$f=$f*$i;$f=$f*$i;return($f);return($f);}}

$b=5;$b=5;$c=fact($b);$c=fact($b);print($c);print($c);?>?>

Page 63: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 6363

FonctionsFonctions

Utilisation des fonctionsUtilisation des fonctions Une fonction définie dans un script peut Une fonction définie dans un script peut

être utilisée dans les autres scripts du être utilisée dans les autres scripts du même fichier.même fichier.

Exemple : fonction2.phpExemple : fonction2.php

Page 64: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 6464

FonctionsFonctions

Modes de passage des paramètresModes de passage des paramètres

Par valeurPar valeur

Par référencePar référence

Par référence ponctuellePar référence ponctuelle

Page 65: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 6565

FonctionsFonctions

Passage Par valeurPassage Par valeur Mode par défautMode par défaut Les paramètres effectifs gardent leur Les paramètres effectifs gardent leur

valeurs après l’appel de la fonction, valeurs après l’appel de la fonction, même si cette dernière les modifie à même si cette dernière les modifie à l’intérieur de son corps.l’intérieur de son corps.

=>=> la fonction travaille sur une copie la fonction travaille sur une copie des paramètresdes paramètres

Page 66: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 6666

FonctionsFonctions

Exemple : fonction_pass_val.phpExemple : fonction_pass_val.php<?php<?phpfunction doubler($a)function doubler($a){{$a=$a*2;$a=$a*2;print("valeur du paramètre dans la fonction:print("valeur du paramètre dans la fonction:

$a<br>");$a<br>");}}

$b=5;$b=5;print("valeur du paramètre avant l'appel:$b<br>");print("valeur du paramètre avant l'appel:$b<br>");doubler($b);doubler($b);print("valeur du paramètre après l'appel:$b<br>");print("valeur du paramètre après l'appel:$b<br>");?>?>

Page 67: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 6767

FonctionsFonctions Passage par référencePassage par référence

Le changement d’un paramètre effectif sera Le changement d’un paramètre effectif sera perceptible de l’extérieur.perceptible de l’extérieur.

=>=> la fonction travaille sur le paramètre et non sur sa la fonction travaille sur le paramètre et non sur sa copiecopie

Notation : précéder le paramètre formel par &Notation : précéder le paramètre formel par &

function nom_fonction(&$param1,&$param2,function nom_fonction(&$param1,&$param2,…)…)

Page 68: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 6868

FonctionsFonctions Exemple :fonction_passage_ref.phpExemple :fonction_passage_ref.php

<?php<?phpfunction doubler(function doubler(&&$a)$a){{$a=$a*2;$a=$a*2;print("valeur du paramètre dans la fonction:$a<br>");print("valeur du paramètre dans la fonction:$a<br>");}}

$b=5;$b=5;print("valeur du paramètre avant l'appel:$b<br>");print("valeur du paramètre avant l'appel:$b<br>");doubler($b);doubler($b);print("valeur du paramètre après l'appel:$b<br>");print("valeur du paramètre après l'appel:$b<br>");?>?>

Page 69: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 6969

FonctionsFonctions

Passage par référence ponctuelPassage par référence ponctuel

Lors de la définition de la fonction les Lors de la définition de la fonction les

paramètres sont passés par valeurparamètres sont passés par valeur

Lors de l’appel de la fonction les Lors de l’appel de la fonction les

paramètres effectifs sont précédés paramètres effectifs sont précédés

par &par &

Attention : Risque d’incohérenceAttention : Risque d’incohérence

Page 70: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 7070

FonctionsFonctions Exemple : fonction_passage_ponc.php Exemple : fonction_passage_ponc.php fonction factoriellefonction factorielle

<?php<?phpfunction doubler($a)function doubler($a){{$a=$a*2;$a=$a*2;print("valeur du paramètre dans la fonction:$a<br>");print("valeur du paramètre dans la fonction:$a<br>");}}

$b=5;$b=5;print("valeur du paramètre avant l'appel:$b<br>");print("valeur du paramètre avant l'appel:$b<br>");doubler(doubler(&&$b);$b);print("valeur du paramètre après l'appel:$b<br>");print("valeur du paramètre après l'appel:$b<br>");?>?>

Page 71: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 7171

FonctionsFonctions

Paramètres par défautParamètres par défaut Attribuer une valeur par défaut à un (des) Attribuer une valeur par défaut à un (des)

paramètre(s) omis lors de l’appel d’une fonctionparamètre(s) omis lors de l’appel d’une fonction Notation : affecter la valeur par défaut au Notation : affecter la valeur par défaut au

paramètre formelparamètre formel function nom_fonction($param1,$param2 function nom_fonction($param1,$param2 = val = val )) Le 2Le 2èmeème paramètre a une valeur par défaut paramètre a une valeur par défaut Appel de la fonctionAppel de la fonction

nom_fonction($eff); nom_fonction($eff);

nom_fonction($eff1,$eff2);nom_fonction($eff1,$eff2);

Page 72: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 7272

FonctionsFonctions

Paramètres par défautParamètres par défaut Exemple : fonction_par_def1.phpExemple : fonction_par_def1.php

<?php<?phpfunction conversion($init=0,$fin=180,$pas=20)function conversion($init=0,$fin=180,$pas=20){{for($i=$init;$i<=$fin;$i+=$pas)for($i=$init;$i<=$fin;$i+=$pas){{$grade = $i*200/180;$grade = $i*200/180;print("$i : $grade <br>");print("$i : $grade <br>");}}}}conversion();conversion();conversion(10);conversion(10);conversion(20,90,10);conversion(20,90,10);?>?>

Page 73: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 7373

FonctionsFonctions

Paramètres par défaut : Paramètres par défaut : Attention !Attention ! Seuls les derniers paramètres peuvent avoir Seuls les derniers paramètres peuvent avoir

des valeurs par défautdes valeurs par défaut

Exemple : fonc_par_def2.phpExemple : fonc_par_def2.php function f_ambigue($p1function f_ambigue($p1=0=0, $p2, $p3, $p2, $p3=5=5))

Erreur lors de l’interprétationErreur lors de l’interprétation

Ambiguité lors de l’appel de la fonctionAmbiguité lors de l’appel de la fonction

Comment interpréter f_ambigue(1,5) ?Comment interpréter f_ambigue(1,5) ?

f_ambigue(0,1,5) ou f_ambigue(1,5,5)f_ambigue(0,1,5) ou f_ambigue(1,5,5)

Page 74: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 7474

FonctionsFonctions

Nombre de paramètres indéfiniNombre de paramètres indéfini

Dans ce cas les paramètres sont extraits par Dans ce cas les paramètres sont extraits par deux fonctions :deux fonctions :

func_num_arg()func_num_arg() : retourne le nombre de : retourne le nombre de paramètres passés à la fonctionparamètres passés à la fonction

func_get_arg ($i)func_get_arg ($i) : retourne le paramètre d’indice : retourne le paramètre d’indice $i dans la liste des paramètres$i dans la liste des paramètres

Le premier paramètre a l’indice 0Le premier paramètre a l’indice 0

Page 75: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 7575

FonctionsFonctions Nombre de paramètres indéfiniNombre de paramètres indéfini

Exemple : fonction_par_indef.phpExemple : fonction_par_indef.php afficher les paramètres reçus par une fonctionafficher les paramètres reçus par une fonction

<?php<?phpfunction sansparam()function sansparam(){{$nb_par = func_num_args();$nb_par = func_num_args();for($i=0;$i<$nb_par;$i++)for($i=0;$i<$nb_par;$i++){{$param = func_get_arg($i);$param = func_get_arg($i);print("param $i : $param <br>");print("param $i : $param <br>");}}}}sansparam("bonjour","mon","ami");sansparam("bonjour","mon","ami");?>?>

Page 76: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 7676

FonctionsFonctions Fonctions récursivesFonctions récursives

Dans le corps d’une fonction on peut trouver un appel à Dans le corps d’une fonction on peut trouver un appel à elle-mêmeelle-même

Exemple : fonction_recursive.phpExemple : fonction_recursive.php factoriellefactorielle

<?php<?phpfunction fact($a)function fact($a){{if ($a==1) return(1);if ($a==1) return(1);else return($a*fact($a-1));else return($a*fact($a-1));}}

$b=5;$b=5;$c=fact($b);$c=fact($b);print("$b ! = $c");print("$b ! = $c");?>?>

Page 77: Ecole ESIAM1 Langage PHP : Chapitre 1 Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 7777

FonctionsFonctions Variables globalesVariables globales

Les paramètres locales à une fonction ne sont pas Les paramètres locales à une fonction ne sont pas

visibles de l’extérieurvisibles de l’extérieur

Une variable globale peut être accédée ou modifiée Une variable globale peut être accédée ou modifiée

à partir de n’importe quelle fonction du même fichierà partir de n’importe quelle fonction du même fichier

Pour utiliser une variable globale (déclarée à Pour utiliser une variable globale (déclarée à

l’extérieur de la fonction) nous devons la déclarer l’extérieur de la fonction) nous devons la déclarer

par la ligne suivante : par la ligne suivante :

global $nom_var;global $nom_var;

Exemple : fonction_var_global.phpExemple : fonction_var_global.php