Le langage PHP
Le langage PHP
Claudine Chaouiya
chaouiya@esil.univ-mrs.fr
http://www.esil.univ-mrs.fr/~chaouiya
¸Introduction
¸Elements du langage
l Syntaxe de base l Types de données l Structures de contrôle l Fonctions l Bibliothèques ¸Formulaires
Introduction - 1
Introduction - 1
1994 Rasmus Lerdorf voulait garder la trace de ceux qui venaient consulter son CV, 1995, PHP/FI Version 2, puis PHP3 et PHP4
en 2001 plus de 5 millions de sites utilisent PHP PHP3 distribué sous licence GNU GPL
langage interprété conçu pour faciliter l'écriture de pages dynamiques. langage de script intégré : compilé comme module du serveur HTTP
– temps de réponse plus rapides pour les serveurs très sollicités
– simplicité pour l'utilisateur qui voit les instructions comme des extensions de HTML (il n'est plus nécessaire de maintenir séparés documents Web et scripts CGI)
– le serveur HTTP reconnait un fichier intégrant du code PHP : il le parcourt avant de l'expédier au client :
chaque instruction PHP est transmise à l'interpréteur
l'interpréteur exécute l'instruction, sorties transmises au serveur le serveur redirige ces sorties vers le client.
Introduction - 2
Introduction - 2
* Gestion et utilisation de bases de données, comme MySQL.
* Utilisation de données saisies par les visiteurs (annuaires, forums, commandes, etc)
* Assemblage de pages ou de fichiers même en provenance d'autres ordinateurs.
* Adaptation du contenu aux visiteurs (Cookie, site d'origine, heure, logiciel ou ordinateur utilisé, etc).
* Statistiques spécialisées (avec des renseignements précis: noms, produits, recherches, etc).
* Envoi automatique d'E-Mail (confirmation de formulaire, liste de diffusion, etc).
* E-commerce: Caddie, gestion des articles, des commandes et des clients. * Réalisation de données dans tous les formats d'Internet (HTML, Texte, WAP, Gif, etc).
* Exécution d'autres programmes (PHP, CGI, Perl, etc)
* Interaction avec d'autres langages de script (JavaScript, WMLScript, etc) * Utilisation de fonctions de calcul et de manipulation de textes ou
d'images.
Introduction - 3
Introduction - 3
Pages Web dynamiques :
¸
Données dynamiques (date, compteur, identification du
client...)
¸
Formulaires HTML
¸
Méthodes :
ß scripts exécutés par le client : javascript
ß SSI (Server Side Include), PHP
Introduction - 4
Introduction - 4
<html>
<head> <title>Test PHP</title> </head> <body>
<?php $date = date("d-m-Y");
echo "Bonjour tout le monde<p>"; echo "nous sommes le $date <br>"; ?>
</body> </html>
El
El
é
é
ments du langage - syntaxe
ments du langage - syntaxe
¸
Mélange de C et de Perl
¸
Identificateurs sensibles à la casse, sauf pour les
fonctions
¸
Instructions terminées par un ';'
¸Commentaires /* ... */ // .... # ...
¸
Noms de variables commencent par un '$', suivi
d'une lettre ou un souligné '_'.
¸
Pas de limite de taille.
$i $compteur $_tmp ¸Pas de déclaration explicite, pas de typage
¸
Types de données : scalaires (entiers, décimaux,
chaînes de caractères), composites (tableaux, objets)
Types de donn
Types de donn
é
é
es
es
l Entiers (long en C) : iint $decimal = 16 $hex =0x10 $octal=020 l Booléens : boolean (true / false )
l Decimaux (double en C) : double, float $var = 0.012 $var=12.0E-3 l Chaînes: string (guillemets doubles pour la substitution de variables
et le traitement de séquences d'échappement)
$a='jour' $b="Bon\t$a\n" $c='Bon\t$a\n'
l Forcer le type d'une variable :
fonction settype : $a = 3.1415 $rslt=settype($a,"int") $a vaut 3 et $rslt vaut 1
"cast" (int),(real),(string)(array), (object) :! $a = (int) "123abc"
et les fonctions gettype(), is_long(), is_string(), is_int()...
$foo = "0"; // $foo string (ASCII 48) $foo ++; // $foo string "1"
$foo+=1; // $foo integer (2) $foo=5 + "10 soleils"; // $foo integer (15)
Types de donn
Types de donn
é
é
es - Tableaux
es - Tableaux
l il est important de bien les maitriser
l deux types de tableaux, indicés (comme en C) et associatifs l $tab[0]="p"; $tab[1]="h";tab[2]="p"
$tab = array("p","h","p"); $tab[]="3"; ¤ $tab[3]="3";
l $pomme = array( 'forme'=> 'rond' , 'gout' => 'sucre', 'couleur'
=> 'rouge',4); // clé de 4 sera 0
$a['forme'] = 'rond';... $a['nom'] ='pomme'; $a[ ]= 4; $pomme['couleur']='verte';
l $b[] = 'a'; $b[] = 'b'; $b[] = 'c'; //array( 0 => 'a' , 1 => 'b' , 2 => 'c' )
Types de donn
Types de donn
é
é
es - Tableaux
es - Tableaux
l le parcours de tableau :
$a=array(1,2,3,4);
for ($i=0;$i<4;$i++) echo "$a[$i] ";
$tableau=array("a"=>"un","b"=>"deux","c"=>"trois"); while(list($clef,$valeur)=each($tableau)){
echo "$clef est $valeur \n"; }
l les tableaux multidimension :
$a[1] = $f; # tableau à une dimension $a["foo"] = $f;
$a[1] [0] = $f; # tableau à deux dimensions
$a["foo"] [2] = $f; # mélanger indices associatifs et numériques $a[3]["bar"] = $f;
$a["foo"] [4] ["bar"] [0] = $f; # tableau à quatre dimensions
Op
Op
é
é
rateurs
rateurs
l arithmétiques : + - * / %
l incrément/décrément : ++$a
incrémente $a de 1, puis retourne $a. $a++ retourne $a, puis l'incrémente de 1.
--$a décrémente $a de 1, puis retourne $a.
$a-- retourne $a, puis décrémente $a de 1
.
l concaténation de chaînes : .
l logiques : ! && || AND XOR OR
MM $x = true;! $y = false; $z = false;
$x || $y AND $z false
( $x || ($y AND $z)) true
$x OR $y AND $z true
l de comparaison : < <= > >= == !=
Structures de contr
Structures de contr
ô
ô
le
le
l conditionnelles : if ( cond ) instr
if ( cond ) instr1 else instr2
if ( cond ) instr1 elseif instr2 else instr3
switch (comme en C)
( cond ) : instr1 ? instr2
l de boucles : while ( expr ) instr
do instr while( expr )
Les fonctions utilisateurs
Les fonctions utilisateurs
l
PHP 3, les fonctions doivent être définies avant qu'elles ne
soient utilisées, ni un nombre variable d'arguments ( ≠PHP4).
l
PHP ne supporte pas la surcharge ou la redéfinition de
fonctions déjà déclarées.
l
PHP supporte le passage d'arguments par valeur (méthode par
défaut), par référence.
l
valeur de retour, souvent un tableau (
return)
function switch_faux($x,$y){ $z=$x; $x=$y; $y=$z; } function switch_vrai(&$x,&$y){ $z=$x; $x=$y; $y=$z; } $a=3; $b=5;
echo "avant switch_faux $a $b \n"; switch_faux($a,$b);
echo "apres switch_faux $a $b \n"; switch_vrai($a,$b);
Les fonctions utilisateurs
Les fonctions utilisateurs
l Les valeurs de retour : l'instruction de retour est optionnelle. Tous les
types de variables peuvent être renvoyés, tableaux et objets compris.
function carre ($num) { return $num * $num; } echo carre (4); // affiche '16'.
l pour renvoyer plusieurs valeurs, renvoyer un tableau.
function petit_nombre() { return array (0, 1, 2); } $a= petit_nombre(); echo "$a[0] - $a[1] - $a[2]";
l concept de fonctions variables :si le nom d'une variable est suivi de
parenthèses, PHP recherchera une fonction de même nom, et essaiera de l'exécuter. M
function foo() { ... } function bar( $arg) { ... }
$func = 'foo'; $func();
Port
Port
é
é
e des variables
e des variables
l globales : définies à l'extérieur d'une fonction. Pour y accéder dans
une fonction utiliser global ou $GLOBALS tableau associatif des variables globales
l locales : définies à l'intérieur de la fonction et les paramètres
l statiques : variables locales conservant leur valeur entre les appels de
la fonction
function bidon1(){ function bidon1(){
global $x; $GLOBALS["x"]="bonjour";
$x="bonjour"; }
}
$x="adieu"; echo $x;
function cpt(){
static $i=0; echo "$i"; $i=$i+1;
}
Variables dynamiques
Variables dynamiques
l noms de variables qui sont variables. C'est-à-dire un nom de variable
qui est affecté et utilisé dynamiquement. variable classique $a = "bonjour";
variable dynamique prend la valeur d'une variable et l'utilise comme nom d'une autre variable :$$a = "tout le monde";
Æ2 variables définies et stockées dans l'arbre des symboles PHP: $a (valeur "bonjour") et $bonjour (valeur "toute le monde. Alors,
echo "$a ${$a}"; !!!!!!!!!!!!produira le même affichage que echo "$a $bonjour";
l utiliser les variables dynamiques avec les tableaux,
$$a[1] est ambigu
variable qui a pour nom $a[1] Æ ${$a[1]} ou l'index [1] de la variable $$a Æ ${$a}[1]
Biblioth
Biblioth
è
è
que de fonctions
que de fonctions
•
chaines de caractères•
tableaux•
mathématiques•
date / heure•
répertoires et fichiers•
HTTP•
manipulation de variables•
bases de données•
et bien d'autres ...Fonctions : manipulation de chaines
Fonctions : manipulation de chaines
chop -- Enlève les espaces de fin de chaîne.
chr -- Retourne un caractère.
echo -- Affiche une ou plusieurs chaînes.
explode -- Scinde une chaîne en morceaux, grâce à un délimiteur.
implode -- Met les elmts tableau dans 1 chaîne, avec 1 chaîne de jointure.
ord -- Retourne la valeur ASCII du caractère.
parse_str -- Analyse 1 chaîne, et en déduit des variables et leur valeur.
print -- Affiche 1 chaîne. printf -- Affiche une chaîne formatée.
str_pad -- Complète 1 chaîne avec 1 autre str_repeat-- Répète une chaîne.
str_replace -- Remplace toutes les occurrences d'une chaîne par une autre.
strip_tags -- Enlève les balises HTML et PHP.
strlen -- Retourne la longueur
strnatcmp -- Compare des chaînes par ordre "naturel"
strpos -- Recherche la 1ère occurrence d'un caractère dans une chaîne.
strrev-- Inverse l'ordre des caractères d'une chaîne.
strtolower-- Met tous les caractères en minuscules.
Fonctions : tableaux
Fonctions : tableaux
array_fill -- Remplit un tableau avec une même valeur
array_flip -- Remplace les clés par les valeurs, et les valeurs par les clés
array_intersect -- Calcule l'intersection de tableaux
array_merge -- Rassemble plusieurs tableaux
array_push-- Empile un ou plusieurs éléments à la fin d'un tableau
array_search-- Recherche dans un tableau la clé associée à une valeur
array_sum-- somme des valeurs du tableau
array -- Crée un tableau asort-- Trie un tableau en ordre
each-- Retourne chaque paire clé/valeur d'un tableau
end-- Positionne le pointeur de tableau en fin de tableau
ksort-- Trie un tableau suivant les clés
list-- Transforme une liste de variables en tableau
next -- Avance le pointeur interne d'un tableau pos -- elt courant
prev -- Recule le pointeur courant reset -- Remet le pointeur au début
rsort-- Trie en ordre inverse shuffle -- Mélange les elts d'un tableau
Fonctions math
Fonctions math
é
é
matiques
matiques
M_PI 3.14159265358979323846 Pi
M_E 2.7182818284590452354 e
M_LOG 2E1.4426950408889634074 log_2 e
Abs -- Acos -- Asin -- Atan -- Cos -- Sin -- Tan
base_convert-- Convertit un nombre entre des bases arbitraires.
BinDec -- Convertit de binaire en décimal
Ceil - - Floor -- round Arrondits
deg2rad -- Convertit un nombre de degrés en radians
Exp-- exponentielle
Log10 -- logarithme en base 10. Log -- Logarithme naturel (népérien)
max -- min -- pow -- rand --Sqrt -- Racine carrée.
rand -- génère une valeur aléatoire
Fonctions date / heure
Fonctions date / heure
checkdate
-- Valide une date/heure.
date-- Formate une date/heure locale
getdate-- Retourne la date/heure
gettimeofday
-- Retourne l'heure actuelle
gmtdate
-- Formate une date/heure GMT/CUT.
localtime
-- Lit l'heure locale
Fonctions syst
Fonctions syst
è
è
me de fichiers
me de fichiers
chgrp -- chmod -- chown --. copy-- Copie un fichier. "
disk_total_space -- Retourne la taille d'un dossier
fclose -- Ferme un fichier. feof -- Teste la fin du fichier.
fflush -- Envoi tout le contenu généré dans un fichier
fgetc -- Renvoie le caractère que pointe le pointeur du fichier.
gets-- Renvoie la ligne courante où se trouve le pointeur du fichier.
fgetss -- Renvoie la ligne courante où se trouve le pointeur du fichier et
élimine les balises HTML
file_exists -- Vérifie si un fichier existe.
file -- Lit le fichier et renvoie le résultat dans un tableau.
fileatime-- date à laquelle le fichier a été accédé pour la dernière fois.
fileowner -- fileperms --filesize -- filetype
fputs -- Ecrit dans un fichier.
is_dir is_executable is_file is_readable is_writable mkdir
--rename -- rmdir.
Fonctions manipulation de variables
Fonctions manipulation de variables
doubleval -- floatval -- intval
empty -- Détermine si une variable est affectée.
get_defined_vars -- Liste toutes les variables définies gettype -- Retourne le type de la variable.
is_array -- Détermine si une variable est un tableau.
is_bool is_double is_float is_int is_integer is_long is_numeric is_real is_string isset --settype -- Affecte un type à une variable.
Int
Int
é
é
gration dans une page HTML
gration dans une page HTML
" Fichiers .phtml, .php, .php3, .phps (syntaxe color_e) " Balises :
<? echo "Bonjour ! \n"; ?>
<?php echo "Bonjour ! \n"; ?>
<script language="php"> echo "Bonjour ! \n"; </script> <html> <head> <title>Exemple</title> </head> <body> <?php
echo "Bonjour, je suis un script PHP!"; ?>
</body> </html>