• Aucun résultat trouvé

Langage PHP limites du schéma statique du web – Cours et formation gratuit

N/A
N/A
Protected

Academic year: 2022

Partager "Langage PHP limites du schéma statique du web – Cours et formation gratuit"

Copied!
77
0
0

Texte intégral

(1)

Langage PHP : Chapitre 1

Pr. Aissam MESRAR

(2)

Introduction

Eléments de base du langage PHP Fonctions

Tableaux Formulaires

PHP et MySQL Cookies

Sessions

Expressions régulières

Plan général du cours

(3)

Plan Plan

Introduction Introduction

Eléments de base du langage PHP Eléments de base du langage PHP

Fonctions Fonctions

(4)

Introduction

Introduction

(5)

Schéma statique du web Schéma statique du web

P1 P2 P3 Pn

Réseau Réseau Serveur

Serveur

Client Client

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

(6)

Limites du Schéma statique du web Limites du Schéma statique du web

P1 P2 P3 Pn

Réseau Réseau Serveur

Serveur

Client Client

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

(7)

Schéma statique non convenable Sché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 date

n’importe quelle date

Web dynamique et interactif

Limites du Schéma statique du web

Limites du Schéma statique du web

(8)

Web dynamique et interactif Web dynamique et interactif

P1 P2 P3 Pn

Réseau Réseau Serveur

Serveur

Client Client

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

Après un moment

(9)

Web dynamique et interactif Web dynamique et interactif

Moteur PHP Moteur PHP

Page web générée sur le serveur à la demande Page 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

(10)

Web dynamique et interactif Web dynamique et interactif

P1.html

Réseau Réseau Serveur

Serveur

Client Client

Demande p1.html

La page p1.html a été envoyée au

P2.php P3.php Pn.html

P1.html

Moteur PHP

(11)

Web dynamique et interactif Web dynamique et interactif

P1.html

Réseau Réseau Serveur

Serveur

Client Client

Demande p2.php

Moteur 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

(12)

Web dynamique et interactif Web dynamique et interactif

Autres moteurs Autres moteurs

CGI Common Gateway Interface CGI Common Gateway Interface

ASP Active Server Pages ASP Active Server Pages

JSP Java Server Pages JSP Java Server Pages

CFM Cold Fusion Macromédia CFM Cold Fusion Macromédia

PERL PERL

(13)

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

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

PHP, Perl, Python, JAVA, JavaScript PHP, Perl, Python, JAVA, JavaScript

Langages compilés Langages compilés

C, C++, JAVA, Pascal C, C++, JAVA, Pascal

(14)

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

Langages compilés Langages compilés

Avantages Avantages

Conversion en binaire : 1e seule fois Conversion en binaire : 1e seule fois

Plus rapide Plus rapide

Inconvénients Inconvénients

Incompatibilité / plates_formes Incompatibilité / plates_formes

(15)

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

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

Avantages Avantages

Portabilité Portabilité

Inconvénients Inconvénients

Relativement lent Relativement lent

Code source divulgué Code source divulgué

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

un langage interprété

(16)

Domaines d’application des langages Domaines d’application des langages

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

C : Applications Systèmes C : Applications Systèmes

JAVA : Applications pour systèmes embarqués JAVA : Applications pour systèmes embarqués (tél portable, carte à puce)

(tél portable, carte à puce)

PERL : Administration système PERL : Administration système

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

(17)

Performances des langages Performances des langages

Un langage est performant dans son domaine Un langage est performant dans son domaine d’application

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 (langage j) 300 lignes (langage j)

(18)

PHP :

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

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

Intégré avec l’HTML Intégré avec l’HTML

Dans le même fichier, on peut trouver du code HTML et Dans le même fichier, on peut trouver du code HTML et

PHP PHP

(19)

PHP :

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

Performances Performances

Rapidité Rapidité

Stabilité : ne plante pasStabilité : ne plante pas

ScalabilitéScalabilité : comportement normal avec un nombre important de : comportement normal avec un nombre important de visiteurs

visiteurs

Sécurité : pas de défaillanceSécurité : 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

(20)

PHP :

PHP : Raisons de succès Raisons 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 PHP

d’interpréteur PHP

Serveur web : Apache, IIS, AOL server, RoxenServeur web : Apache, IIS, AOL server, Roxen

Environnement préféré : Apache/LinuxEnvironnement préféré : Apache/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

(21)

Concurrents de PHP : ASP Concurrents de PHP : ASP

Avantages Avantages

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

(IIS,Frontpage, Visuel (IIS,Frontpage, Visuel Studio, Access, SQL Server)

Studio, Access, SQL Server)

Outils avec interface simple : Outils avec interface simple :

Pas besoin d’être ingénieur Pas besoin d’être ingénieur système pour administrer le serveur web

système pour administrer le serveur web

Inconvénients Inconvénients

Limité au serveur IIS Limité 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 accompagnants

accompagnants

(22)

Concurrents de PHP : JSP Concurrents de PHP : JSP

 Avantages Avantages

Utilise un langage totalement Orienté Objets Utilise un langage totalement Orienté Objets

Portabilité (JAVA) Portabilité (JAVA)

Meilleure sécurité Meilleure sécurité

Inconvénients Inconvé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 )

(23)

Concurrents de

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

Macromédia

Avantages Avantages

Environnement de développement central intégrant tous les outilsEnvironnement de développement central intégrant tous les outils

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

Inconvénients Inconvénients

Langage lourd, mal conçu, évolue lentement Langage lourd, mal conçu, évolue lentement   ne ne convient pas aux développeurs initiés

convient pas aux développeurs initiés

Hébergeurs CFM : Pas nombreux et payants Hébergeurs CFM : Pas nombreux et payants

Environnement payant Environnement payant

(24)

Concurrents de PHP : PERL Concurrents de PHP : PERL

Avantages Avantages

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énients Inconvénients

Le web n’était pas l’objectif du PERL à l’origine Le web n’était pas l’objectif du PERL à l’origine

Installation sur machine cliente relativement compliquée Installation sur machine cliente relativement compliquée

(25)

PHP : Historique PHP : 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 CV consulter son CV

PHP signifie alors PHP signifie alors Personal Home Page Personal Home Page

Version 2.0 en 1995 Version 2.0 en 1995

Récupération de données soumises par Formulaire Récupération de données soumises par Formulaire

Interfaçage avec les SGBD Interfaçage avec les SGBD

Possibilité d'effectuer des calculs mathématiques Possibilité d'effectuer des calculs mathématiques

(26)

PHP : Historique PHP : Historique

1996 : 15 000 sites Web 1996 : 15 000 sites Web

1997 1997

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

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

50 000 sites Web 50 000 sites Web

1998 1998

version 3.0 : + d'extensions, + d'interfaçage, version 3.0 : + d'extensions, + d'interfaçage,

syntaxe objet syntaxe objet PHP signifie

PHP signifie : PHP Hypertext Prepocessor : PHP Hypertext Prepocessor

(27)

PHP : Historique PHP : Historique

1999 : 100 000 sites Web 1999 : 100 000 sites Web

2000 : version 4.0, basée sur le moteur 2000 : version 4.0, basée sur le moteur Zend (+de sécurité, + de performances) Zend (+de sécurité, + de performances)

2001 : 5 100 000 sites Web 2001 : 5 100 000 sites Web

2003 : versions 4.3.4 et 5.0B2 2003 : versions 4.3.4 et 5.0B2

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

utilisent PHP

2005 2005 : version 5 Orienté Objet : version 5 Orienté Objet

(28)

Eléments de base de PHP

Eléments de base de PHP

(29)

Structure d’un script PHP Structure 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 casse Sensible à 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.php Exemple : simple.php

<?php

<?php

print "Mon premier essai avec PHP"

print "Mon premier essai avec PHP";;

?>

?>

(30)

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

script script

<?php

….

……….

……..

?>

Moteur PHP

<html>

….

……….

……..

</html>

(31)

Structure d’un fichier PHP Structure d’un fichier PHP

Possibilité d’intégrer un script avec du Possibilité d’intégrer un script avec du code HTML dans le même fichier

code HTML dans le même fichier (extension .php, .php3, .phtml) (extension .php, .php3, .phtml)

Code HTML

<?php

….

……….

……..

?>

Moteur PHP

<html>

….

……….

……..

</html>

(32)

Structure d’un fichier PHP Structure d’un fichier PHP

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

le même fichier

Exemple : Exemple : plusieurs_scripts.php plusieurs_scripts.php

(33)

Commentaire Commentaire

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

// Commentaire de ligne // Commentaire de ligne

#Commentaire de ligne #Commentaire de ligne

/* commentaire sur /* commentaire sur

plusieurs lignes */ plusieurs lignes */

(34)

Types de données Types 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 ou/et des Défini implicitement avec des expressions numériques ou/et des chaînes de caractères

chaînes de caractères

(35)

Types de données Types de données

Types Numériques Types 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 :

(36)

Types de données Types de données

Chaînes de caractères Chaî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 : opérateur Concaténation des chaînes de caractère : opérateur . .

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

(37)

Types de données Types de données

Type booléen Type booléen

N’est pas défini explicitementN’est pas défini explicitement

Cas particulier des types numériques et chaînes de caractèresCas particulier des types numériques et chaînes de caractè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érateurs Opérateurs

Opérateurs de comparaisonOpérateurs de comparaison

==, !=,>,>=,<,<=

==, !=,>,>=,<,<=

Opérateurs logiquesOpérateurs logiques

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

(38)

Identifiants Identifiants

Identifiant de variables ou de constantes est Identifiant de variables ou de constantes est une suite de caractères qui :

une suite de caractères qui :

Ne contient pas d’espace Ne contient pas d’espace

Commence par une lettre ou le caractère souligné Commence par une lettre ou le caractère souligné

‘_’ ‘_’

Différent des mots clés Différent des mots clés

Exemples Exemples

Nom, n1, _prix, … Nom, n1, _prix, …

2n, prix ttc, define

2n, prix ttc, define

(39)

Constantes Constantes

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

cours de l’exécution du script

Déclaration Déclaration

define("nom_constante" ,"valeur"); define("nom_constante" ,"valeur");

Exemples Exemples

define("PI",3.14); define("PI",3.14);

define("Langue","Français"); define("Langue","Français");

(40)

Variables Variables

Pas besoin de déclaration explicite Pas besoin de déclaration explicite

La variable est précédée par le caractère ‘$’ lors La variable est précédée par le caractère ‘$’ lors de l’utilisation

de l’utilisation

Exemple Exemple

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

(41)

Variables Variables

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

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 variable Tester l’initialisation d’une variable

Fonctions isset() et empty() Fonctions isset() et empty()

(42)

Expressions Expressions

Expressions numériques Expressions 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;

(43)

Expressions Expressions

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

Différence entre " " et ’ ’: Différence entre " " et ’ ’:

entre " " les variables seront remplacées par leurs valeursentre " " les variables seront remplacées par leurs valeurs

$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 interprétées Entre ’ ’ les variables dans la chaîne ne sont pas interprétées

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

$a sera

$a sera bonjour $bbonjour $b

(44)

Expressions Expressions

Expressions de chaînes de caractères Expressions 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"

(45)

Tests

(46)

Test Test

Forme 1 Forme 1

Permet de choisir entre deux alternatives selon la Permet de choisir entre deux alternatives selon la valeur d’une expression logique

valeur d’une expression logique

Notation Notation

ifif(exp_log)(exp_log)

bloc1 bloc1

elseelse bloc2 bloc2

Où bloc1 et bloc2 sont des suites d’instructions Où bloc1 et bloc2 sont des suites d’instructions

Exemple : test.php Exemple : test.php

(47)

Test Test

Forme 2 Forme 2

Permet d’exécuter une seule alternative si une Permet d’exécuter une seule alternative si une condition est vérifiée. Dans ce cas la

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

deuxième alternative n’existe pas.

Notation Notation

if(exp_log) if(exp_log)

bloc1 bloc1

(48)

Test Test

Imbrication de if/else Imbrication de if/else

if(exp1) if(exp1)

if(exp11) if(exp11)

bloc11 bloc11

elseelse

bloc12 bloc12

else else

if(exp21) if(exp21)

bloc21 bloc21

elseelse

bloc22 bloc22

(49)

Test Test

Imbrication de if/else : 2 Imbrication de if/else : 2

èmeème

notation notation

if(exp1) if(exp1)

if(exp11) if(exp11)

bloc11 bloc11

else else

bloc12 bloc12

elseif

elseif (exp21) (exp21)

bloc21 bloc21

else else

(50)

Choix multiple Choix multiple

Permet de choisir une alternative parmi plusieurs Permet de choisir une alternative parmi plusieurs

C’est la généralisation du test C’est la généralisation du test

Notation Notation

switch

switch(exp)(exp) {{

case val1 : bloc1;case val1 : bloc1;

case val2 : bloc2;case val2 : bloc2;

casecase valn : blocn; valn : blocn;

[default

[default : bloc_dfaut; : bloc_dfaut;]] }}

Un bloc Un bloc i i est exécuté si exp == val est exécuté si exp == val i i

default est optionnel default est optionnel

Exemple :switch.php

(51)

Les boucles

Les boucles

(52)

Les boucles Les boucles

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

d’instructions plusieurs fois

Trois types de boucles Trois types de boucles

while while

do .. while do .. while

for for

(53)

Les boucles Les boucles

Boucle while Boucle while

Notation : Notation :

while (exp_log) while (exp_log) { {

Bloc Bloc

} }

(54)

Les boucles Les boucles

Boucle do … while Boucle do … while

Notation : Notation :

do do { { Bloc Bloc } }

while (exp_log);

while (exp_log);

(55)

Les boucles Les boucles

Boucle for Boucle for

Notation : Notation :

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

Bloc Bloc

} }

(56)

Les boucles Les boucles

Exemple : boucle.php Exemple : 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");

?>

?>

(57)

Les boucles Les boucles

Instruction break/continue Instruction break/continue

break break

Quitte la boucle immédiatementQuitte la boucle immédiatement

Avortement de la boucleAvortement de la boucle

continue continue

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

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

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

condition

(58)

Fonctions

(59)

Pourquoi les fonctions ? Pourquoi les fonctions ?

Modularité Modularité

Diviser le problème à résoudre en petits Pbs et résoudre Diviser le problème à résoudre en petits Pbs et résoudre chacun d’eux par un module (facile à composer), appelé chacun d’eux par un module (facile à composer), appelé

fonction

fonction pour la plupart des langages pour la plupart des langages

Réutilisabilité Réutilisabilité

Possibilité de réutiliser certaines fonctions dans un autre Possibilité de réutiliser certaines fonctions dans un autre

problème problème

MAJ facile MAJ facile

La mise à jour d’une fonction n’affecte pas les autres La mise à jour d’une fonction n’affecte pas les autres

fonctions

fonctions

(60)

Fonctions Fonctions

Déclaration Déclaration

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

Corps de la fonction Corps de la fonction } }

$Param1, $param2, … sont dits paramètres formels

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

de la fonction

Appel de la fonction Appel de la fonction

nom_fonction($eff1,$eff2,…) nom_fonction($eff1,$eff2,…)

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

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

(61)

Fonctions Fonctions

Fonction qui retourne une valeur Fonction qui retourne une valeur

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

retourner une valeur et de quitter la fonction.

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

Corps de la fonction Corps de la fonction return($resultat);

return($resultat);

}}

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

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

fonction

Appel de la fonction Appel de la fonction

(62)

Fonctions Fonctions

Exemple Exemple : fonction1.php : fonction1.php

fonction factorielle fonction factorielle

<?php

<?php

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

(63)

Fonctions Fonctions

Utilisation des fonctions Utilisation des fonctions

Une fonction définie dans un script peut être Une fonction définie dans un script peut être utilisée dans les autres scripts du même

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

fichier.

Exemple : fonction2.php Exemple : fonction2.php

(64)

Fonctions Fonctions

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

Par valeur Par valeur

Par référence Par référence

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

(65)

Fonctions Fonctions

Passage Par valeur Passage Par valeur

Mode par défaut Mode par défaut

Les paramètres effectifs gardent leur valeurs Les paramètres effectifs gardent leur valeurs après l’appel de la fonction, même si cette après l’appel de la fonction, même si cette

dernière les modifie à l’intérieur de son corps.

dernière les modifie à l’intérieur de son corps.

=>

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

paramètres

(66)

Fonctions Fonctions

Exemple : fonction_pass_val.php Exemple : fonction_pass_val.php

<?php

<?php

function 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($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>");

(67)

Fonctions Fonctions

Passage par référence Passage 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 copie

copie

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,…)

(68)

Fonctions Fonctions

Exemple :fonction_passage_ref.php Exemple :fonction_passage_ref.php

<?php

<?php

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

(69)

Fonctions Fonctions

Passage par référence ponctuel Passage 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 valeur

paramè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 par &

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

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

(70)

Fonctions Fonctions

Exemple : fonction_passage_ponc.php Exemple : fonction_passage_ponc.php

fonction factorielle fonction factorielle

<?php

<?php

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

(71)

Fonctions Fonctions

Paramètres par défaut Paramè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 fonction paramè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 formel

paramè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);

(72)

Fonctions Fonctions

Paramètres par défaut Paramètres par défaut

Exemple : fonction_par_def1.phpExemple : fonction_par_def1.php

<?php

<?php

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

?>

?>

(73)

Fonctions Fonctions

Paramètres par défaut : Paramètres par défaut : Attention ! Attention !

Seuls les derniers paramètres peuvent avoir des Seuls les derniers paramètres peuvent avoir des valeurs par défaut

valeurs par défaut

Exemple : fonc_par_def2.php Exemple : 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)

(74)

Fonctions Fonctions

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

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

fonctions :

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

passés à la fonction

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

dans la liste des paramètres

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

(75)

Fonctions Fonctions

Nombre de paramètres indéfini Nombre 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

<?php

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

(76)

Fonctions Fonctions

Fonctions récursivesFonctions récursives

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

Exemple : fonction_recursive.phpExemple : fonction_recursive.php

factoriellefactorielle

<?php

<?php

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

(77)

Fonctions Fonctions

Variables globales Variables globales

Les paramètres locales à une fonction ne sont pas visibles Les paramètres locales à une fonction ne sont pas visibles de l’extérieur

de l’extérieur

Une variable globale peut être accédée ou modifiée à partir Une variable globale peut être accédée ou modifiée à partir de n’importe quelle fonction du même fichier

de n’importe quelle fonction du même fichier

Pour utiliser une variable globale (déclarée à l’extérieur de la Pour utiliser une variable globale (déclarée à l’extérieur de la fonction) nous devons la déclarer par la ligne suivante :

fonction) nous devons la déclarer par la ligne suivante :

global $nom_var;

global $nom_var;

Exemple : fonction_var_global.phpExemple : fonction_var_global.php

Références

Documents relatifs

il faut écrire une lettre par case et une lettre peut être utilisée pour deux

Then the global editing tab can be used to assign an overcurrent device definition to the set, such as from a transformer fusing schedule used at the utility.. Continue with the

Nous passerons donc en paramètres au script le nom du champ dans la base de données, son type, sa valeur et bien sûr l'id de l'enregistrement dont il faut modifier le champ....

coder, compiler, ex´ ecuter, reproduire les conditions permettant de tester la modification, tester ... data driven (comportement == donn´

Christian Poslaniec : On dirait que tu as abandonné Pierrot et Colombine, ainsi que l'encre, en même temps que fermait l'atelier du vieux Mans.. On commence par

On considère la fonction dont le tableau de variation est le suivant et ( ) sa courbe représentative dans un repère orthonormé ( ⃗ ⃗). 0,5pt b) Déterminer les limites

- La biodiversité des individus ou biodiversité génétique liée à l’existence d’allèles provoquant des différences entre les individus d’une même espèce

- La BIODIVERSITÉ DES ÉCOSYSTÈMES ou ÉCOSYSTÉMIQUE correspondant à la diversité des milieux de vie observables sur Terre, incluant les espèces qui habitent.. - La