30
1 Programmation Web Le langage PHP

1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

Embed Size (px)

Citation preview

Page 1: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

1

Programmation Web

Le langage PHP

Page 2: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

2

1 - Le langage PHP

• Est un langage de script

• S’exécute : – Dans un serveur, comme dépendance d’une

requête– En ligne de commande comme une alternative

aux scripts système (vs. shell ou perl).

• PHP, Perl et les shell scripts ont une puissance quasiment équivalente

Page 3: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

3

2 - Le langage PHP (1)

• Les avantages de PHP :– De très nombreuses bibliothèques– Une communauté de premier ordre :

• Réactivité de l’aide technique

• Rapidité de résolution de problèmes

• Fréquence des correctifs et fiabilité des librairies

– Une gestion pratique et efficace des variables et de la mémoire

– Des structures de données et objets « opportunistes »

Page 4: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

4

3 - Le langage PHP (2)

• Les défauts de PHP :– Des premières librairies peu rigoureuses (problème de

l’open-source contributif)

– Une encapsulation faible (modèle objet simple) => réutilisabilité pas évidente à organiser.

– Un langage facile, donc peu élitiste (problème de l’égo des informaticiens, par rapport aux profanes)

– Des limites de performances, dues aux limites architecturales de son environnement

– Des performances faibles comparé à la programmation « lourde »

Page 5: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

5

4 - Les fichiers PHP

• Deux grands modes du langage : – La génération de sortie : fonction initiale de son

ancêtre PHP-FI• HTML majoritaire

• La page PHP est une page Web « automatisée »

• Sa structure est celle d’une page WEB

– Le programme-script• Code PHP majoritaire

• Le page Web doit être lue comme un « programme »

• La structure est celle d’un code source qui produit des sorties : echo "…", print("…"), etc.

Page 6: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

6

5 - Les fichiers PHP (2)

• Deux modes plus "mineurs" :– Le fichier librairie :

• Destiné à être "inclus" :

include_once "treelib.inc.php";

• NE contient QUE des fonctions :<?phpfunction tree_up($node){ ...

}

function tree_down($node){ ...

}

?>

Page 7: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

7

6 - Les fichiers PHP (3)

• Deux modes plus "mineurs" (suite) :– Le fichier de paramètres :

• Destiné à être "inclus" :

include_once "config.inc.php";

• NE contient QUE des déclarations de variables :<?php$CFG['host'] = 'localhost';

$CFG['dblogin'] = 'toto';

$CFG['dbpassword'] = 'monpasse';

?>

Page 8: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

8

7 - Les bases du langage• Les commentaires

– Trois formes de base :// commentaires ligne

/* commentaires bloc

*/

# commentaires de type PERL/Shell

– Une forme "collectable" (PhpDoc) :/**

* @uses CFG

* @param object $objvalue definition

* ...

*/

Page 9: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

9

8 - Les bases du langage (2)• Les variables

– Modèle unifié de variable : $ + un nom$var = 1;

$var = 3.2E+4;

$var = "du texte";

$var = array();

$var = new Object();

– Une variable peut donc être n'importe quoi, y compris rien du tout :

echo (isset($var)) ? 'initialisée' ; 'rien' ;

– isXXXX() permet de savoir... : ex : isarray($var) ?

Page 10: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

10

9 - Les bases du langage (3)• En général :

– Les variables n'ont pas de type déclaré– Les variables ne déclarent pas– Suivant le réglage de PHP, l'utilisation d'une

variable non initialisée : • ne signale rien, la variable vaut 0 ou '' ou null

suivant son utilisation.

• Signale une notice :• Notice: Undefined variable: existepas in D:\wwwroot\WWW-

MOODLE1_8_2-PHP\mod\brainstorm\operators\categorize\organize.php on line 14

Page 11: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

11

10 - Les bases du langage (4)• Les chaînes de caractères

– Chaînes littérales$str = 'ne substitue ni $variables ni les \nretour lignes';

echo $str;

ne substitue ni $variables ni les \nretour lignes

– Chaînes "substituantes"$variable = 'VARIABLES';

$str = "substitue les $variables et les \nretour lignes";

echo $str;

substitue les VARIABLES et les

retour ligne

Page 12: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

12

11 - Les bases du langage (5)• Cas particulier : les tableaux

– Un tableau s'utilise, – il se déclare mais ne ne s'alloue pas (C)

$var = array();

$var[3] = 4.2;

// le tableau contient 4 cases

– Peut se remplir itérativement (push)$var = array();

for ($i = 0 ; $i < 10 ; $i++){

$var[] = rand();

}

// le tableau contient 10 cases de 0 à 9

Page 13: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

13

12 - Les bases du langage (6)

• Tableaux suite : les tableaux associatifs– Les "hashtables" sont des structures ESSENTIELLES à

PHP.

– Une 'hashtable" est un tableau qui associe des clefs à des valeurs :$CFG = array();

$CFG['host'] = 'localhost';

$CFG['login'] = 'toto';

$CFG['maxDelay'] = 2000; // msec

– ou encore :$CFG = array('host' => 'localhost', 'login' => 'toto', 'maxDelay' => 2000);

Page 14: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

14

13 - Les bases du langage (7)• Tableaux suite : les tableaux associatifs (2)

• On peut mettre n'importe quoi dans la valeur => des objets ou des autres tableaux ou hashes !!

• Toutes les librairies de tableau tiennent compte de cette ambivalence

'host' 'localhost'

'login' 'toto'

'maxDelay' 2000

$CFG

array_keys($CFG) array_values($CFG)

Page 15: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

15

14 - Les bases du langage (8)• Augmentation de la dimension des tableaux

– Pour des tableaux simples, comme en C : $TAB = array();

$TAB[1][0] = 4;

– Les "cases" non initialisées valent 0 ou chaîne vide, etc.

– Un tableau à dimension multiple est TOUJOURS un tableau de tableaux : $TAB = array(1,2,6,array(2,3),array(3,4,7));

– Cas du tableau associatif :$CFG = array('forum' => array('canpost' => 1));

echo $CFG['forum']['canpost'];

– Une construction associative complexe forme un arbre

Page 16: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

16

15 - Les bases du langage (9)• Structures et objets

– On parle peu de structures en PHP. Tout ce qui contient des membres est objet.

– Les objets peuvent être construits de façon opportuniste : $obj->nom = 'Champagne Mumm';

$obj->prix = 10.5;

$obj->quantité = 10;

Constitue une instance "à la volée".

– Les membres peuvent être de toute nature :• valeurs

• texte

• tableaux / hashes

• objets

Page 17: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

17

16 - Les bases du langage (10)

• Structures et objets– Les objets peuvent être également déclarés en

"classes". – Ceci permet d'ajouter des fonctions dans l'objet

(méthodes -> Cf cours 2° semestre).– Le modèle objet de PHP reste un modèle léger.– En l'absence de persistance mémoire, son usage

reste un "plus" mais accessoire.– Hors sujet pour ce cours.

Page 18: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

18

17 - Fonctions

• Fonction PHP– Une fonction est définie par son nom et ses

paramètres :function maFonction($parm1, $parm2 , $parm3=0){

… code de la fonction …

}

– Si des valeurs par défaut sont données on peut appeler la fonction sans ces paramètres : $ret = maFonction($val1, 'toto');

$ret = maFonction(1, 'titi', 4);

sont tous deux valides

Page 19: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

19

18 - Fonctions• Une fonction peut être définie "dans le code" :

if ( condition ){

function f(…){… code de la fonction …

}

… suite du if …

}

• Retour de fonction– Une fonction renvoie toujours quelque chose (au pire false)

function maFonction(…){

$valretour = …;

… code de la fonction …

return $valretour;}

Page 20: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

20

• La visibilité des variables utilisées dans une fonction est "locale" par défaut$var = 2;

function f(…){

$var = 3;

echo $var."\n";

}

echo $var."\n";

Affiche toujours 3 puis 2.

global $var$var = 2;

function f(…){ global $var;

$var = 3;echo $var."\n";

}echo $var."\n";

19 - Variables globales

Esp

ace

de f

Espace global

Esp

ace

de f

Page 21: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

21

• Certaines variables sont "implicitement" accessibles de partout, sans nécessité de faire appel à global.

20 - Variables superglobales

Tableaux liés au contexte Web$_GET$_POST$_COOKIE$_FILES$_REQUEST$_SESSION

Tableaux d'informations d'environnement système$_SERVER$_ENV

Page 22: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

22

21 - Variables et fonctions variables• L'utilisation d'une variable correspond, en fait, à

l'utilisation d'une clef dans un hash :$var = 2;

$__['var'] = 2; // représentation virtuelle

• Il est donc possible de mettre le nom d'une variable dans une variable et d'en voir le contenu : $var = 'une variable';

$var1 = 'var';

echo $$var1; // ecrit "une variable"

• On peut faire la même chose avec des fonctions$var = 'unefonction';

$res = $var(); // exécute la fonction unefonction()

Page 23: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

23

22 - Fonctions variables (1)• Les fonctions variables permettent de créer de la modularité :

// Dans le module A

function A_create(){return $module;

}

function A_display($module){

}

// Dans l'infradtructure

foreach($modules as $module){

$createfunction = "{$module->name}create";

$displayfunction = "{$module->name}display";

$mod = $createfunction(); $displayfunction($mod);

}

// Dans le module Bfunction B_create(){return $module;}function B_display($module){}

Page 24: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

24

23 - Librairies• Le PHP contient de très nombreuses librairies.

• Les librairies, après un début un peu cafouilleux ont tendance à se professionnaliser.

• La plupart des librairies sont disponibles PAR DEFAUT. Les autres doivent être ajoutées dans php.ini.

• Les librairies totalement ESSENTIELLES :

– Vous ne pouvez pas vous en passer : • Tableaux

• Variables

• Les librairies TRES UTILES :• Expressions régulières

• Expr. Régulières Perl

• Chaînes de caractères• Variables

• Calendrier• Mail, Zip

• MySQL• Images

• Dates et heures• Systeme de fichiers

Page 25: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

25

24 - Librairie "Variables"• Fonctions d'interrogation de variables

– empty -- Si une variable contient une valeur non nulle – is_array, is_object, is_scalar, is_resource, is_null – isset -- Si une variable est définie (existe)– is_callable -- Si l'argument peut être appelé comme fonction – is_bool, is_float, is_int, is_integer, is_numeric,

is_real, is_string

• Fonctions de lecture de variable (transtypage)– floatval, intval, strval

• Fonctions de manipulation du type (transtypage)– gettype, settype

• Fonctions de conversion de stockage– serialize, unserialize

Page 26: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

26

25 - Librairie "Tableaux"• Deux librairies dans une (ancienne et nouvelle

array_XXXX() )• Construction de tableaux

– array, list

• Ajout de données (unitaire)– array_pad, array_pop, array_push, array_shift,

array_unshift

• Opérations• array_diff_assoc, array_diff_uassoc, array_diff,

array_intersect_assoc, array_intersect, array_reduce, array_slice, array_splice, array_sum, array_udiff_uassoc, array_udiff

Page 27: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

27

25 - Librairie "Tableaux" (2)• Fonctions de tri

– arsort, asort, sort, uasort, uksort, usort, krsort, ksort, rsort, natcasesort, natsort, array_multisort

– Plus généralement :

• -u- : invoque un "callback utilisateur"

• -a- : tient compte des associations clefs-valeurs

• -r- : reverse

• Inversion clefs-valeurs– array_flip

• Opérations sur les valeurs– array_filter, array_change_key_case, array_reverse,

array_unique

Page 28: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

28

26 - Librairie "Tableaux" (3)• De nombreuses autres librairies ont des fonctions

relatives aux tableaux. Exemple :– Dans la librairie "String" : join, split, explode, implode

• De nombreuses autres fonctions sont "array aware" : cela veut dire qu'elles ont un résultat différent selon qu'on leur fournit une valeur scalaire ou un tableau. (type "mixed" dans la doc).

Page 29: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

29

27 - Librairie "String"• Près de 90 fonctions de manipulation des chaînes de caractères.

• Une librairie peu structurée.

• Les fonctions POSIX strXXXXX()– strcasecmp, strchr, strcmp, strcoll, strcspn, stripos, stristr, strlen, strncmp, strpos, strrchr, strrev, strripos, strrpos, strstr, strtok, strtolower, strtoupper, strtr

• Les fonctions d'échappement– strip_tags, stripcslashes, stripslashes, trim, html_entity_decode, htmlentities, htmlspecialchars, addcslashes, addslashes

• De très nombreuses autres.

Page 30: 1 Programmation Web Le langage PHP. 2 1 - Le langage PHP Est un langage de script Sexécute : –Dans un serveur, comme dépendance dune requête –En ligne

30

Fin du cours