Les opérateurs de comparaison sont souvent un aspect négligé du PHP, ce qui peut amener à obtenir
des résultats inattendus. L’un de ces problèmes provient des comparaisons “strictes”
(par ex., la comparaison des booléens en tant qu’entier).
Lors de l’utilisation des instructions ‘if/else’ à l’intérieur d’une fonction ou d’une classe, il y a une idée fausse
qui veut que ‘else’ doit être utilisé conjointement à un ‘if’ de façon à traiter les différents cas possibles.
Cependant, si le but est de déterminer la valeur de retour et que les blocs contiennent l’instruction ‘return’
alors le bloc ‘else’ n’a plus d’intérêt.
L’instruction ‘switch’ est un bon moyen d’éviter de taper un nombre d’instructions ‘if/else if’ sans fin mais il y a
plusieurs choses à savoir :
l’instruction ‘switch’ ne compare que la valeur de la variable, pas son type (équivalent à ‘==’)
Le programme parcourt l’ensemble des cas définis par l’instruction ‘case’ jusqu’à trouver une correspondance.
Si rien n’est trouvé alors l’instruction ‘default’ est utilisée (si elle est définie)
Sans l’instruction ‘break’, le programme continuera de parcourir les cas possibles jusqu’à tomber sur une
instruction ‘break/return’ (si elle est définie)
À l’intérieur d’une fonction, utiliser l’instruction ‘return’ supprime le besoin d’une instruction ‘break’ étant
donné qu’il termine l’exécution de la fonction.
Vous pouvez trouver lors de l’utilisation d’espace de noms que les fonctions “internes” sont cachées par les fonctions
que vous écrivez. Pour régler ce problème, vous devez vous référer à l’espace de noms global en utilisant un
‘backslash’ devant le nom de vos fonctions.
La chaîne de caractères (String) est une fonctionnalité qui revient souvent dans les conversations
au sein de la communauté PHP mais heureusement cette section va vous expliquer les différences
entre les différentes string possibles et leurs intérêts/cas d’utilisations.
Guillemet simple
Les guillemets simples sont le moyen le plus simple de définir une chaîne de caractères et sont souvent la plus rapide.
Leur vitesse provient du fait que PHP n’analyse pas ces chaînes (par ex., pour y évaluer des variables à l’intérieur).
Ils sont utiles pour :
Les chaînes de caractères qui n’ont pas besoin d’être analysées
Les guillemets doubles sont le couteau suisse des chaînes de caractères mais sont cependant plus lents étant donné
que celles-ci doivent être analysées. Ils sont utiles pour :
Les chaînes contenant des caractères échappés (par ex., \n, ", etc)
Les chaînes contenant à la fois du texte brut et des variables à l’intérieur
une meilleur lisibilité
En utilisant des guillemets doubles contenant des variables, il arrive souvent que cette variable soit collé à un
autre caractère. Le résultat étant que PHP ne la verra plus. Pour régler ce problème, entourez la variable à l’aide
d’une paire d’accolades.
La syntaxe Nowdoc a été introduit dans la version 5.3 et se comporte de la même façon que les guillemets simples
excepté le fait que qu’elle est plus pratique pour écrire plusieurs lignes sans concaténation.
La syntaxe Heredoc se comporte de la même façon que les guillemets doubles
excepté le fait que qu’elle est plus pratique pour écrire plusieurs lignes sans concaténation.
L’opérateur ternaire est un bon moyen de condenser la paire d’instruction ‘if/else’ mais est trop souvent utilisé.
Bien que les opérateurs ternaires puissent se trouver à l’intérieur d’autres opérateurs ternaires, il est souvent
conseillé de n’en utiliser qu’un seul par ligne par souci de lisibilité.
N.d.T.: PHP évalue l’opérateur de gauche à droite (associativité à gauche) contrairement au C ce qui peut provoquer
des erreurs :
Pour ‘retourner’ une valeur avec l’opérateur ternaire, utilisez la syntaxe correcte.
Parfois, les programmeurs essaient de rendre leur code plus “propre” en déclarant des variables prédéfinies avec un
autre nom. Ce qui se passe en réalité, c’est que la consommation mémoire va doubler. Avec l’exemple ci-dessous,
disons que la chaîne de caractères contient 1Mio de données. En copiant cette variable, le poids de l’exécution de ce
script passera alors à 2Mio.