Introduction
Cette astuce présente plusieurs fonction ou astuces en php qui sont différentes alors que beaucoup de monde croit qu'elles agissent de la même façon.
Concaténation ou paramètres ?
Avec la fonction echo (ou print), on peut afficher plusieurs variables et chaines de caractères à la suite.
Exemple :
<?php
$blabla='du texte';
echo 'Ceci est ',$blabla;
?>
Ici, on utilise la virgule entre la chaine de caractères et la variable.
On peut également utiliser un point.
Lorsque l'on utilise des
points, on apelle ça la
concatenation.
Avec des
virgules, c'est le
passage de plusieurs paramètres à la fonction.
J'ai testé les deux méthodes, et le passage de plusieurs paramètres est assurément plus rapide.
Voici d'ailleurs une
page de test ou sont comparés les deux méthodes :
Cependant, les virgules ne peuvent être utilisés qu'avec un echo ou un print, contrairement à la concaténation.
Exemple :
<?php
echo $blabla.'blabla';//fonctionne (concaténation)
echo $blabla,'blabla';//fonctionne (passage de plusieurs paramètres)
$variable=$blabla.'blabla'//fonctionne (concaténation)
$variable=$blabla,'blabla'//ne fonctionne pas (passage de plusieurs paramètres)
?>
Guillemets/Apostrophe
Ou aussi "Doubles quotes/Simples quotes".
Lorsque l'on utilise la fonction echo, elle peut être utilisée avec des doubles ou simples quotes.
Avec des doubles quotes, une variable sera affichée.
Avec des simples quotes, elle sera comptée comme texte.
Exemple :
<?php
$variable='Texte';
echo "Ceci est : $variable";
//affiche : "Ceci est : Texte"
$variable='Texte';
echo 'Voici un $variable';
//affiche : "Voici un $variable"
?>
C'est d'ailleurs pour ça qu'il est plus rapide d'utiliser une chaine avec des simples quotes, car php ne "cherche" pas de variables.
Structure require/include
Ces deux structures, qui permettent d'inclure un fichier dans la page, sont quasi-identiques, sauf au niveau de la gestion des erreurs.
Si le fichier n'existe pas, include génère une erreur de niveau Warnig (alerte) mais require génère une erreur fatale et l'arrêt du script.
include
require
Utilisez plutôt
include_once et
require_once qui vous assureront que votre fichier n'est inclu qu'une seule fois, au cas où include ou require tentent d'inclure accidentellement une page qui a déjà été inclue.
isset vs empty
La fonction
isset vérifie l'
existence d'une variable.
C'est tout.
La fonction
empty, elle, vérifie :
- Si la variable existe (comme la fonction isset)
- Si un nombre n'est pas égal a zéro
- Si une chaîne de caractères n'est pas vide ou ne contient pas que des espaces/retours a la ligne/tabulations ou un zéro.
Donc c'est plus rapide de faire :
<?php
if (empty($variable))
echo 'La variable est vide';
else
echo 'La variable n'est pas vide';
?>
Que :
if (isset($variable))
{
if (empty($variable))
echo 'La variable est vide';
else
echo 'La variable n'est pas vide';
}
else
echo 'La variable n'existe pas';
?>
htmlentities ou htmlspecialchars ?
Ces fonction permettent de rendre "inoffensives" des variables, c'est a dire des remplacer certains caractères (notamment les chevrons ">" et "<") par leurs entités html.
cependant, il y a une légère différence entre les deux :
htmlentities remplace
tous les caractères qui peuvent s'écrire avec des
entités par leurs entités html correspondantes.
Exemples :
é devient é
" devient "
« devient «
< devient & lt; (sans espace après &)
& devient &
htmlspecialchars, elle, remplace seulement les caractères spéciaux qui servent à coder :
< devient & lt; (sans espace après &)
> devient & gt; (sans espace après &)
" devient ",
& devient &
La seule entité html que je connais et qui n'est pas remplacée par défaut est "'", l'entité de l'apostrophe : '
On peut utiliser des options pour remplacer ou non certains caractères (se reporter a la documentation).
L'apostrophe est remplacé par ''' avec l'option ENT_QUOTES.
Quelle fonction utiliser ?
Je conseille plutôt
htmlentities car les accents et autres caractères spéciaux sont remplacés, ce qui garantit que vous n'aurez pas d'erreur d'encodage.
Cependant, les fichiers sont plus lourds avec cette fonction, car une entité occupe 8 octets (je crois) de plus que le caractère qui lui correspond écrit tel quel.
htmlentities
htmlspecialchars
Nombre de signes égal
Voici un exemple de condition :
if($InfosSurLimage=@getimagesize($image))
echo'c'est bon, on a les infos de l'image';
else
echo'il y a un problème (mauvaise adresse, image au format ico/bmp...)';
Ici, il y a un signe égal («$InfosSurLimage=@
getimagesize($image)»), ce qui signifie que l'on
attribue le résultat de getimagesize à la variable "$InfosSurLimage", puis on vérifie si elle vaut
true (la fonction a réussi) ou
false (une erreur) avec la condition.
Un autre exemple, avec deux signes cette fois-ci :
//on définit une variable bidon (pour l'exemple) :
$VariableQuiSertARien=0;
if($VariableQuiSertARien==false)
echo '$VariableQuiSertARien vaut false est une condition vérifiée avec deux signes ==';
else
echo '$VariableQuiSertARien vaut false est une condition NON vérifiée avec deux signes ==';
Ici, la condition est vérifiée, car on n'utilise que deux signes égal.
false et 0 ne sont pas du même type, mais ils équivalent a une variable vide.
Avec deux signes, on vérifie donc l'
équivalence.
Cependant, si on utilise trois signes égal, la condition n'est pas vérifiée car trois signes égal signifient même valeur et
même type.
Exemples :
Avec deux signes égal,cette condition est vérifiée :
'0'==0==false
Avec trois signes égal, cette même condition n'est pas vérifiée, car :
'0':Chaîne de caractères
0:valeur numérique
false:booléen
Pour résumer :
= : On attribue une valeur a une variable
== : On vérifie si les valeurs sont équivalentes
=== : On vérifie si les valeurs sont équivalentes et de même type.
Certains des exemples sont disponibles ici :
http://ssylvainsab.free.fr/...
Publié par
Ssylvainsab -
Dernière mise à jour le 5 novembre 2009 à 12:03 par marlalapocket