Introduction au langage PHP et ses bases
Introduction au langage PHP et ses bases
Fred Hémery
IUT Lens
Département Informatique
Introduction PHP
Le code PHP placé dans un fichier script constitue un bloc d’instructions PHP
marqué par les délimiteurs <?php et ?>.
# !/ bin / php -f
<? php ... ? >
Le code PHP placé dans une page HTML se distingue du code HTML par les
délimiteurs <?php et ?> et constitue un bloc d’instructions PHP.
<? php ... ? >
Il peut y avoir plusieurs blocs de code PHP dans une page PHP
Les instructions (code HTML) à l’extérieur des délimiteurs PHP sont envoyées
sans modification vers le client
Les instructions dans les blocs PHP sont exécutées et produisent du code HTML
envoyé vers le client.
Les délimiteurs peuvent être différents, mais ces variantes sont moins utilisées
< script language =" php " >... </ script >
<? ... ? > <! - - pas accept é dans tous les contextes -->
<% ... % >
Une sortie en PHP est produite par l’instruction echo ou print qui sont des mots
clés du langage.
<? php
echo " Bonjour le monde ";
echo (" avec des parenth é ses ") ;
print " M ê me chose pour print ";
?>
Le texte produit n’est visible que si le bloc d’instructions se trouve dans le corps
de la page HTML
< html >
< head > < title > Test PHP </ title > </ head >
< body >
<? php echo " <p > Bonjour monde </ p >"; ? >
</ body >
</ html >
Condition de développement
On peut exécuter un script PHP dans un terminal avec la commande
php -f script.php, ou alors
Il faut un serveur web (apache, nginx) avec un module qui va prendre en charge
les fichiers contenant du code PHP (fichiers avec une extension .php)
Il est très facile de récupérer une distribution XAMPP Link qui s’installe sur
toutes les architectures de machine un serveur apache avec le module PHP
associé avec un serveur de base de données Mysql et un interpréteur Perl.
La page contenant du code PHP doit être gérée par le serveur apache
Commentaires PHP
Les commentaires dans un bloc PHP utilisent la même syntaxe que C++ ou Java
.
<? php
echo " Bonjour le monde ";
// commentaire sur une ligne ou encore
# commentaire perl , bash ...
/* commentaire sur
plusieurs lignes */
?>
Il est conseillé d’utiliser la notation Camel case, c-à-d chaque mot qui compose
l’identifiant commence par une majuscule sauf le premier.
$nbClientsGarage ;
$cumulDroitsCredit ;
L’affectation PHP
Produit
Notice : Undefined variable : varUndef in / Users / fred / Sites / EasyPHP / accueil .
åphp on line 9
$b =0;
if ( isset ( $b ) ) ... // condition é valu é e à true
if ( empty ( $b ) ) ... // condition é valu é e à true
if ( isset ( $c ) ) ... // condition é valu é e à false
if ( empty ( $c ) ) ... // condition é valu é e à true
Les constantes
Une constante est, comme son nom l’indique, une variable pour laquelle on ne
peut pas changer la valeur.
Une constante est utilisée pour garantir que sa valeur ne changera pas au cours
de l’exécution du script.
define ( " MA_CONSTANTE " , " 19 " ) ; // MA_CONSTANTE est initialis é e avec la
åstring "19"
echo MA_CONSTANTE ; // affiche "19" ( c ' est une string , pas un entier )
define ( " PI " , 3.14 ) ; // PI initialis é e avec la valeur 3.14
echo PI ; // affiche 3.14 ( c ' est un double )
$a = array ( ' un ' = > 1 , ' deux ' = > 2 , ' trois ' = > 3) ;
var_dump ( $a ) ; // affiche array (3) { [" un "]= > int (1) [" deux "]= > int (2) ["
åtrois "]= > int (3) }
var_export ( $a ) ; // affiche array ( ' un ' = > 1 , ' deux ' = > 2 , ' trois ' = > 3 , )
Lors de l’affectation d’une variable $b par une variable $a, physiquement une
copie du contenu de la variable $a est faite dans la $b.
$a = 10;
$b = & $a ;
echo " a = $a , b = $b " . PHP_EOL ; // affiche a = 10 , b = 10
$a = 15;
echo " a = $a , b = $b " . PHP_EOL ; // affiche a = 15 , b = 15
$b = 5;
echo " a = $a , b = $b " . PHP_EOL ; // affiche a = 5 , b = 5
Opérations Arithmétiques :
$x = 4 + 2; // 6 // addition
$x = 4 - 2; // 2 // soustraction
$x = 4 * 2; // 8 // multiplication
$x = 4 / 2; // 2 // division
$x = 4 % 2; // 0 // modulo ( reste de la division )
Opérateurs de comparaison
Les opérations bit à bit travaillent au niveau des bits de la donnée stockée dans
la variable.
$x = 5 & 4; // 101 & 100 = 100 (4) // and
$x = 5 | 4; // 101 | 100 = 101 (5) // or
$x = 5 ^ 4; // 101 ^ 100 = 001 (1) // xor ( exclusive or )
$x = 4 << 1; // 100 << 1 = 1000 (8) // left shift
$x = 4 >> 1; // 100 >> 1 = 10 (2) // right shift
$x = ~4; // ~00000100 = 11111011 ( -5) // invert
Et la version raccourcie
$x =5; $x &= 4; // 101 & 100 = 100 (4) // and
$x =5; $x |= 4; // 101 | 100 = 101 (5) // or
$x =5; $x ^= 4; // 101 ^ 100 = 001 (1) // xor
$x =5; $x < <= 1; // 101 << 1 = 1010 (10) // left shift
$x =5; $x > >= 1; // 101 >> 1 = 10 (2) // right shift
Les tableaux
Un tableau est utilisé pour stocker une collection d’éléments identifiée sous un
seul nom.
Lors de la création du tableau, il faut indiquer pour chaque valeur la clé associée
qui remplace l’index dans les tableaux numériques. L’opérateur => permet de
relier la valeur à sa clé
$b = array ( ' un ' = > 'a ' , ' deux ' = > 'b ' , ' trois ' = > 'c ') ;
Exercice
Question
Exercice
Question
Réponse
$tab = array () ;
$tab [1] = ' Un ';
$tab [2] = ' Deux ';
$tab [3] = ' Trois ';
print_r ( $tab ) ;
Un autre exemple
$b = array ( ' un ' = > array ( ' 00 ' , ' 01 ') ) ;
echo $b [ ' un ' ][0] . $b [ ' un ' ][1]; // "0001"
Il peut y avoir plus de deux dimensions
$e [][][] = "000";
echo $e [0][0][0]; // affiche 000
Programmation Web côté serveur
27 / 51
Les opérateurs Les string Les tableaux Structures de contrôle Les fonctions
Exercice
Question
Exercice
Question
Réponse
$tab = array () ;
$tab [ ' rouge '] = array ( ' betterave ' , ' tomate ') ;
$tab [ ' vert '] = array ( ' haricot vert ' , 'é pinard ' , '
åcourgette ') ;
$tab [ ' jaune '] = array ( ' poivron ' , ' courge ') ;
$tab [ ' bleu '] = array ( ' aubergine ' , ' radis bleu ') ;
print_r ( $tab ) ;
Fonction Description
print_r($tab) affiche la totalité du contenu du tableau.
print_r($tab, true) stocke la totalité du contenu du tableau dans une string.
array_slice($tab,$deb, $fin) renvoie un sous tableau de $deb à $fin du tableau $tab.
count($tab) renvoie le nombre d’éléments du tableau.
current($tab) renvoie la valeur pointée par le curseur sans modifier la position
du curseur.
key($tab) renvoie la valeur de la clé.
next($tab) avance d’une position le curseur et renvoie la valeur associée.
prev($tab) recule d’une position le curseur et renvoie la valeur associée.
end($tab) place le curseur à la fin et renvoie la valeur associée.
reset($tab) place le curseur au début et renvoie la valeur associée.
each($tab) fonction qui renvoie un tableau de 4 éléments et avance
d’une position ou false si on est à la fin du tableau.
Index Valeur
0 la clé du curseur
“key” la clé du curseur
1 la valeur du curseur
“value” la valeur du curseur
Manipuler un tableau
Fonctions de tri
sort, rsort Trie les tableaux indexés par ordre croissant, décroissant
asort, arsort Trie les tableaux associatifs par ordre croissant, décroissant
ksort, krsort Trie les tableaux associatifs par ordre croissant, décroissant
en utilisant la valeur de clés
natsort, natrsort Trie les tableaux par ordre croissant, décroissant en
utilisant le tri naturel
usort, ursort Trie les tableaux par ordre croissant, décroissant en utilisant
une fonction de tri donnée en paramètre
Autres
array_merge() fusionne deux ou plusieurs tableaux
array_intersect() intersection entre deux ou plusieurs tableaux
shuffle() mélange les éléments du tableau
array_reverse() inverse l’ordre des éléments du tableau
...
Programmation Web côté serveur
30 / 51
Les opérateurs Les string Les tableaux Structures de contrôle Les fonctions
Modifier un tableau
Alternative : if
L’instruction if
if ( condition ) {
if ( condition ) { // instructions du if
// instructions du if } else {
} // instructions du else
// autres instructions }
// autres instructions
Exemple
if ( condition ) { if ( $x == 1) {
// instructions du if echo " x vaut 1 " ;
} elseif ( condition1 ) { } elseif ( $x == 2) {
// instructions du else echo " x vaut 2 " ;
} } else {
// autres instructions echo " x est diff é rent de 1 et de 2 " ;
}
Alternative : switch
L’instruction switch : suite d’alternatives. Le programme évalue les choix les
uns après les autres. L’instruction break est utilisée pour sortie du switch.
l’opérateur ternaire est une écriture simplifiée du "if then else".
switch ( $var ) { Exemple
case label1 :
i n s t ru c ti o n_ la b el 1 ; switch ( $x ) {
... case 1 :
break ; echo " x vaut 1 " ;
case label2 : break ;
i n s t ru c ti o n_ la b el 2 ; case 2 :
... echo " x vaut 2 " ;
break ; break ;
default : default :
instructions_par_defaut ; echo " x est diff é rent de 1 et de 2
... å" ;
} }
// autres instructions
Exemple
// expression qui utilise l ' op é rateur ternaire
$y = ( $x == 1) ? 1 : 2;
Boucle : while
L’instruction while
Exemple
while ( condition ) {
instruction1 ; $i = 0;
instruction2 ; while ( $i < 10) {
... echo $i ++;
} } // affiche 0123456789
// autres instructions
instruction do - while
exemple
$i = 0;
do {
echo $i ++;
} while ( $i < 10) ; // affiche 0123456789
Boucle : for
L’instruction for
Exemple
$a = array (1 ,2 ,3) ;
foreach ( $tab as $elt ) {
foreach ( $a as $v ) {
instruction1 ;
echo $v ;
instruction2 ;
} // affiche "123"
...
}
$a = array ( ' un ' = > 1 , ' deux ' = > 2 , '
foreach ( $tab as $cle = > $valeur ) {
åtrois ' = > 3) ;
instruction1 ;
foreach ( $a as $k = > $v ) {
instruction2 ;
echo " $k = > $v <br > " ;
...
} // affiche un = > 1 <br > deux = > 2 <br
}
å> trois = > 3 <br >
Programmation Web côté serveur
36 / 51
Les opérateurs Les string Les tableaux Structures de contrôle Les fonctions
Syntaxe alternative
Simplifications
while ( $i < 10) : echo $i ++; endwhile ;
Exemple
for (;;) { break ; } // fin du for
$i = 0;
while ( $i ++ < 10) {
for (;;) { break 2; } // fin du for et du while (2 boucles
åenglobantes )
}
Exemple
while ( $i ++ < 10) { continue ; } // lance l ' it é ration suivante
$i = 0;
while ( $i ++ < 10) {
for (;;) { continue 2; } // lance l ' it é ration suivante du while
}
Programmation Web côté serveur
37 / 51
Les opérateurs Les string Les tableaux Structures de contrôle Les fonctions
Exercice
Question
Écrire le script qui indique si un nombre est parfait (un nombre est parfait ssi
il est égal à la somme de ses diviseurs, 6 = 1 + 2 + 3 est parfait)
Exercice
Question
Écrire le script qui indique si un nombre est parfait (un nombre est parfait ssi
il est égal à la somme de ses diviseurs, 6 = 1 + 2 + 3 est parfait)
Réponse
$div = array () ;
echo " Saisir une valeur : " ;
$val = trim ( fgets ( STDIN ) ) ;
if ( empty ( $val ) || ! is_numeric ( $val ) ) {
echo " Saisir un entier ! " ;
return ;
}
$i = 1;
while ( $i < $val ) {
if ( $val % $i == 0) {
$div [] = $i ;
}
$i ++;
}
$cumul = 0;
foreach ( $div as $d )
$cumul += $d ;
if ( $cumul == $val ) {
echo " $val est parfait " . PHP_EOL ;
print_r ( $div ) ;
}
Déclaration
function nomFonc () {
echo " Hello World " ;
}
Utilisation
nomFonc () ; // " affiche Hello World "
Déclaration
function nomFoncP ( $param1 , $oaram2 , $param3 ) {
instruction1 ;
instruction2 ;
...
}
Utilisation
nomFoncP ( $p1 , $p2 , $p3 ) ;
Les paramètres effectifs (les valeurs indiquées à l’appel) seront utilisés dans la
fonction et correspondent aux paramètres formels indiqués lors de l’écriture de
la fonction.
Paramètres par défaut : Il est possible de donner une valeur par défaut à un
paramètre lors de la déclaration de la fonction.
function nomFoncP ( $param1 , $param2 =
åvalDef ) {
function prixTTC ( $prixHT , $tva =19.6) {
instruction1 ;
echo $prixHT * $tva ;
instruction2 ;
}
...
}
Exemple
function myFunc ()
{
$num = func_num_args () ;
$args = func_get_args () ;
for ( $i = 0; $i < $num ; $i ++)
echo $args [ $i ] . ' ';
}
myFunc ( ' Do ' , 'R é ' , ' Mi ') ; // affiche " Do r é Mi "
Les paramètres sont passés par valeur par défaut (copie de la valeur du
paramètre effectif dans le paramètre formel). Une modification de la valeur du
paramètre dans la fonction ne modifie pas la valeur du paramètre effectif.Il est
possible de passer un paramètre par référence en faisant précéder le
paramètre formel par le symbole &.
Exemple
Exemple
Le nom d’une fonction à exécuter n’est parfois connu que juste avant l’appel.
Pour faire cela il suffit de placer le nom de la fonction dans une variable et
d’écrire une instruction avec cette variable suivie d’un niveau de parenthèses
contenant les éventuels paramètres.
Exemple
Exemple
Une fonction anonyme peut utiliser le contexte dans lequel elle s’exécute. Pour
cela elle utilise le mot clé use.
Exemple
$x = 1;
$y = 2;
$callback = function ( $z ) use ( $x , $y ) {
return $x + $y + $z ;
};
echo $callback (3) ; // affiche "6"
Pour utiliser une variable globale au sein d’une fonction il faut la déclarer en la
faisant précéder du mot-clé global, ou en y accédant directement avec le
tableau associatif GLOBALS.
$_GET contient le nom et la valeur des données issues d’un formulaire envoyé
par la méthode get
$_POST contient le nom et la valeur des données issues d’un formulaire envoyé
par la méthode post
function nextInt () {
static $cpt = 0;
return $cpt ++;
}
On peut définir une variable avec la fonction define(), depuis PHP 5.3+ le mot
clè const (utilisé aussi dans les versions précédentes pour les constantes de
classe) permet aussi de créer des variables globales constantes.
La valeur indiquée ne peut pas être une expression.
Ne peut pas être une constante locale.
Une constante définie avec const sera calculée au moment de la compilation.
const PI = 3.14;
Constantes magiques
Name Description
__LINE__ ligne courante dans le fichier.
__FILE__ chemin complet d’accès au fichier.
__DIR__ répertoire du fichier.
__FUNCTION__ nom de la fonction.
__CLASS__ nom de la classe avec le namespace.
__METHOD__ nom de la méthode dans la classe.
__NAMESPACE__ nom du namespace.