Flux rss

[PHP] Les ressemblances à ne pas confondre

Bookmark Ajouter aux favoris / Partager
Dernière mise à jour le 5 mars 2009 à 18:52 par Ssylvainsab
Publié par Ssylvainsab


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 :
http://ssylvainsab.free.fr/autres/tests/concatenation-ou-parametres/

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 &eacute;
" devient &quot;
« devient &laquo;
< devient & lt; (sans espace après &)
& devient &amp;



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 &quot,
& devient &amp;


La seule entité html que je connais et qui n'est pas remplacée par défaut est "&apos;", 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 '&#039;' 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/...
Confondre deux pistes avec [audacity] Bonjour, Voilà comme dit dans le titre j'aimerais savoir comment confondre deux ou plusieurs pistes avec audactity car j'ai enregistrer plusieurs fois et sa ma ouvert a chaque fois une nouvelle piste maintenant j'aimerais les fusionner pour n'en faire... www.commentcamarche.net/forum/affich-9263027-confondre-deux-pistes-avec-audacity
Backweb - backweb.exe backweb - backweb.exe Le processus backweb.exe (backweb) peut indiquer la présence du spyware backWeb. Il ne faut pas le confondre avec backweb-8876480 (backweb-8876480.exe), qui est un utilitaire de Logitech permettant de mettre à jour les pilotes... www.commentcamarche.net/contents/processus/backweb-exe.php3
Mot de passe perdu - Réinitialiser le BIOS Si vous avez oublié ou perdu le mot de passe du BIOS, demandé dès le démarrage de l'ordinateur, cette page vous donne, entre autres, la méthode pour supprimer la demande de mot de passe au tout démarrage du PC (ne pas confondre avec le mot de passe... www.commentcamarche.net/faq/sujet-587-mot-de-passe-perdu-reinitialiser-le-bios
Qu'est ce qu'un proxy ?Qu'est ce qu'un proxy ? On parle souvent au sein d'un réseau informatique de proxy... Qu'en est t'il ? A quoi ça sert ? Comment ça marche ? /!\NOTA /!\ : Ne pas confondre avec un firewall (pare-feu) malgré que le couplage des deux matériels... www.commentcamarche.net/faq/sujet-17453-qu-est-ce-qu-un-proxy
Cooking dash .... (Résolu)Bonjour, Ne me grondez pas mais je cherche une clé d'activation pour Cooking dash j'ai fait la version d'essai et je suis à fond... Ne pas confondre avec Diner dash... Merki merki www.commentcamarche.net/forum/affich-11606879-cooking-dash
Convertir mpeg2 ou flv en mpg(Format ds) (Résolu)Bonjour, Je voudrait un logiciel pour convertir les mep2 ou flv en mpg(ne pas confondre avec mpeg). Il me faudrais un logiciel pour des vidéo de 25 min Merci www.commentcamarche.net/forum/affich-3803224-convertir-mpeg2-ou-flv-en-mpg-format-ds
Changement pile portable Aspire ACER 1310 (Résolu)Bonjour, Changement pile portable Aspire ACER 1310 Au demarrage, je suis obligé de regler la date dans windows (sans doute pile du bios usée) Pourriez-vous m'indiquer comment changer la pile (a ne pas confondre avec la batterie) qui garde les... www.commentcamarche.net/forum/affich-3682308-changement-pile-portable-aspire-acer-1310
Télécharger The CleanerThe Cleaner, a ne pas confondre avec CCleaner, a été écrit à l'origine pour contrer les trojan Back Orifice. Il est rapidement passé à détecter des milliers de programmes malveillants et continue de le faire aujourd'hui. Cette version n'est plus un... www.commentcamarche.net/telecharger/telecharger-34055360-the-cleaner
Télécharger Atomix MP3ATOMIX MP3 est un logiciel de Mixage de son MP3, WAV et WMA fort surprenant. Les connaisseurs remarqueront sa ressemblance avec VirtuaDJ. AtomixMP3 dispose de deux Platines, vous fournissant les habituels 2 morceau lecteur MP3, tangage,... www.commentcamarche.net/telecharger/telecharger-34055377-atomix-mp3
Télécharger Express ScribeExpress Scribe est un lecteur audio professionnel muti plateformes. Il permet non seulement la lecture de fichiers audio, mais aussi et surtout la transcription d'un enregistrement. Il ne faut pas confondre avec la reconnaissance vocale. Possédant un... www.commentcamarche.net/telecharger/telecharger-34055674-express-scribe