Skip to content

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';
  • 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&gt;=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&lt;5;$i++){
    		echo $i;
    	}
    	//équivaut à :
    	$i=0;
    	for(;$i&lt;5;){ &
    		$i++; //$i peut etre conditionné
    	}
     
    	for ($i = 1, $j = 0; $i &lt;= 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&lt;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&lt;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("&lt;p>&lt;strong&gt;ALERTE : &lt;/strong&gt; Erreur : $errstr (Ligne : $errline)&lt;/p&gt;");
}
set_error_handler('warning_handler',E_WARNING | E_USER_WARNING);
//On crée l'erreur
1/0;
restore_error_handler();