PHP5
Opérateur de comparaison
Un opérateur de comparaison permet de retourner des booleens.
Un vrai comparateur ne peut fonctionner que si les opérants sont de meme type.
Il existe deux syntaxe pour comparer deux opérants :
| Syntaxe | Negation | Description |
| == | != | Le == permet de faire une comparaison et realise une comparaison implicite |
| === | !== | Le === va comparer la valeur des operantes et le type |
Exemple:
var_dump(5=='5 paires'); // bool(true) var_dump(5==='5 paires'); //bool(false) var_dump(5==5.0); //bool(true) var_dump(5===5.0); //ATTENTION : bool(false)
Opérateurs logiques
Les opérateurs logiques permettent d’aditionner des comparateurs
Les opérateurs logiques
| Exemple | Nom | Résultat |
|---|---|---|
| $a and $b | ET (And) | Vrai si $a ET $b sont vrais. |
| $a or $b | OU (Or) | Vrai si $a OU $b est vrai |
| $a xor $b | XOR (Xor) |
Vrai si $a OU $b est vrai, mais pas les deux en même temps. |
| ! $a | NON (Not) | Vrai si $a est faux. |
| $a && $b | ET (And) | Vrai si $a ET $b sont vrais. |
| $a || $b | OU (Or) | Vrai si $a OU $b est vrai. |
| && | true | false |
| true | true | false |
| false | false | false |
| || | true | false |
| true | true | true |
| false | true | false |
| XOR (négation) | true | false |
| true | false | true |
| false | true | false |
$a = 0 ; $b = 3 ; $etat = (($a != 0) or ($b==3)); //true $etat = (($a != 0) or ($b==3) && $a===true); //false $etat = (($a != 0) or ($b==3) && ($a===true || $b===3) || $b!=3); //true
Quand on a des || , l’expression de gauche est suffisante pour déterminer le resultat : c’est un opérateur de court-circuit
Opérateur de contrôle d’erreur
Un ‘@’ devant une expression supprime les erreurs qui sont générées.
@(1/0);
A ne jamais utiliser! En effet, il en permet pas d’avoir un controle d’erreur…
On peut contrer l’affichage des erreurs dans le php.ini grace à ‘display_errors = Off’
On peut, si on à pas acces au php.ini, utiliser la fonction ini_set(‘propriete’,valeur);
ini_set('display_errors','On'); error_reporting(E_ALL);
//Si display_errors = 'On' : ini_set('display_errors','Off'); 1/0;
Opérateur d’incrémentation et de décrémentation
Pour incrémenter une variable, comme dans tout autres langage, nous retrouvons, le ++ à ajouter devant ou apres la variable.
Pour décrémenter, on ajoute — devant, ou apres la variable.
Cela ne fonctionne uniquement pour les variables.
On les appels préfixe et postfixe car viennent se coller avant ou apres une variable.
- Préfixe
On incrément la variable puis on évalue l’expression de la nouvelle valeur
$a = 0 ; $b = 3 ; $b .=$a++; echo $b; // 30
- Postfixe
On évalue l’expression puis on incrémente la variable.$a = 0 ; $b = 3 ; $b .=++$a; echo $b; // 31
Opérateurs de concaténation
$message = 'Bonjour'.' toto'; $message .= '!';
Structures de contrôle de flux et structures itératives
Structures de contrôle de flux
- IF/ELSE
if(condition) //ligne d'instruction si vrai [else //ligne d'instruction si faux ]
- Opérateur ternaire
(condition)?condition vraie:condition fausse;
Exemples :
//1ere facon if($a==0) $message = 'OK'; else $message = 'ERREUR'; echo '$message; //2eme facon echo ($a==0)?'OK':'ERREUR';
- Opérateur ternaire
- IF/ELSEIF/ELSE
Premiere facon
if(condition1) { //ligne(s) d'instruction si vrai }elseif(condition2){ //ligne(s) d'instruction }else{ //instruction(s) si condition1 et 2 ne sont pas remplies }
Deuxieme facon recommandée en PHP/HTML
if(condition1) : //ligne(s) d'instruction si vrai elseif(condition2) : //ligne(s) d'instruction else //instruction(s) si condition1 et 2 ne sont pas remplies endif;
- SWITCH ( a privilegier quand on a trois ou plus else )
switch(condition){ case valeur1 : instruction; break; case valeur2 : instruction; break; case valeur3 : instruction; break; default : instruction; break }
Autre facon de faire quand on a une seule instruction pour plusieurs cas
switch(condition) : case valeur1 : case valeur2 : case valeur3 : instruction; break; endswitch;
Exemple :
<?php if(isset($_POST['sub'])){ $val = $_POST['texte']; $msg = 'C\'est une consonne'; switch ($val) : case 'a': case 'e': case 'i': case 'o': case 'u': case 'y': $msg = 'C\'est une voyelle'; endswitch; } ?> <form method="post" action="test.php"> <input type="text" name="texte" size="1"/> <input type="submit" name="sub"/> </form> <?=$msg?>
Structure Itérative
Une structure itérative permet de répéter 1 a n instructions
- WHILE (Tant Que)
Dans la boucle while, les instrctions sont répétées tant que la boucle est vraie. Attention, la condition étant vérifiée au début, la bouclepeut ne pas s’éxécuter.
//1er cas while(condition){ //nstruction(s) } //2eme cas while(condition) //instructions endwhile;
Exemple :
$a = 5; while($a>=0) $a--; //Une seule instruction : pas de {}
- DO WHILE
Contrairement au while, les instructions seront éffectuées au moins une fois.
do{ //intruction(s) }while(condition);
Attention aux boucles while et do while infinies
- FOR
La boucle for permet de controler la répétition en fonction d’un compteur
for([initialisation(s)];[condition(s)];[incrementation(s)/decrementation(s)]){ //instruction(s) }
Particularités du ‘for’
for($i=0;$i<5;$i++){ echo $i; } //équivaut à : $i=0; for(;$i<5;){ & $i++; //$i peut etre conditionné } for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
On peut arreter un for et un while par un break
Le break peut remonter des niveaux :while(true){ for( ; ; ){ break 2; //On arrete les 2 niveaux } }
De meme, pour passer une occurence, on utilise l’instruction continue :
for($i=0;$i<5;$i++){ if($i==0){ continue [nombre de niveaux]; } }
Série d’exemples
echo 'avant' ; while(true) { echo 'début du while' ; for(;;) { echo 'debut du for' ; break 2; echo 'fin du for' ; } echo 'fin du while' ; } echo 'après' ; //affichera avant, début du while, début du for, fin du for, apres echo 'avant' ; while(true) { echo 'début du while' ; break 2; for(;;) { echo 'debut du for' ; echo 'fin du for' ; } echo 'fin du while' ; } echo 'après' ; //affichera une erreur echo 'avant' ; $i = 0; while($i<10) { $i++ ; echo 'début du while' ; for(;;) { echo 'debut du for' ; continue 2; echo 'fin du for' ; } echo 'fin du while' ; } echo 'après' ; //affichera 10 fois début du for etc.
Gestion des erreurs
Un gestionnaire d’erreur est une fonction appellée automatiquement lorsqu’une erreur se produit. On appelle cette fonction, une signature.
function gestionnaire('Type_erreur','message','fichier_ou_erreur_produite','numligne','contexte')
Type d’erreur : E_ALL, Warning etc
Contexte est un tableau contenant les variables globales au moment de l’erreur
On peut alors suivre le processus de debuggage de conflits de son programme. Soit en créeant un fichier de log, soit en envoyant des mails.
Pour appeler le gestionnaire d’erreur, il faudra utiliser la fonction :
set_error_handler('nom_du_gestionnaire','type');
Il est possible d’avoir différents type de gestionnaire d’erreurs (pour un warning, pour un E_ALL, etc.)
Si on veut redonner la main à PHP, on doit utiliser la fonction :
restore_error_handler();
Types d’erreurs qui ne pourront être gérés :
- E_PARSE
- E_COMPILE_*
- E_CORE_*
//Fonction qui permet de traiter l'erreur du type E_WARNING | E_USER_WARNING function warning_handler($errno, $errstr, $errfile, $errline, $errctx){ echo("<p><strong>ALERTE : </strong> Erreur : $errstr (Ligne : $errline)</p>"); } set_error_handler('warning_handler',E_WARNING | E_USER_WARNING); //On crée l'erreur 1/0; restore_error_handler();
Commentaires récents