Bonne pratique : tester la présence de clé dans un tableau
Posté : 23 avr. 2013, 11:46
Bonjour,
J'aurais besoin de vos lumières concernant les bonnes pratiques à mettre en place sur un projet PHP déjà existant.
Aujourd'hui, un grand nombre de notices sont remontées sur nos environnements de DEV car certains développeurs ne testent pas la présence des offset dans un tableau avant d'y faire référence.
ex. 1 :
ex. 2 :
Si fonctionnellement nous maîtrisons le fait que la valeur peut être vide, pourquoi forcément la tester ? En production, les notices PHP ne sont pas remontées et l'appli se comporte correctement.
Nous pourrions utiliser l'exemple 1 sans avoir a tester la présence de l'offset.
Un autre cas pourrait-être d'utiliser un @ afin de ne pas relever de notice mais je trouve que ce procédé ne permettrait pas de débugguer le cas échéant en relevant le niveau des notices dans le php.ini.
ex 3 :
Merci pour vos réponses.
J'aurais besoin de vos lumières concernant les bonnes pratiques à mettre en place sur un projet PHP déjà existant.
Aujourd'hui, un grand nombre de notices sont remontées sur nos environnements de DEV car certains développeurs ne testent pas la présence des offset dans un tableau avant d'y faire référence.
ex. 1 :
$strMaVariable = 'Ma phrase : '.$aMonArray[0];
J'aurais tendance à tester la présence de l'offset avant de l'utiliser.ex. 2 :
$strMaVariable = 'Ma phrase : '.array_key_exists(0, $aMonArray)?$aMonArray[0]:'';
Cependant, vu l'ampleur de l'utilisation des array dans notre projet (ainsi que le nombre de notice relevées), cela fait un grand nombre de contrôles effectués. Je me demande si cela n'a pas une répercussion sur les performances et s'il ne serait pas judicieux d'utiliser une autre pratique qui consisterait à ne pas tester la présence d'offset dans un cas où nous souhaitons utiliser '' (chaîne vide) à la place d'une valeur non présente (comme dans l'exemple précédent).Si fonctionnellement nous maîtrisons le fait que la valeur peut être vide, pourquoi forcément la tester ? En production, les notices PHP ne sont pas remontées et l'appli se comporte correctement.
Nous pourrions utiliser l'exemple 1 sans avoir a tester la présence de l'offset.
Un autre cas pourrait-être d'utiliser un @ afin de ne pas relever de notice mais je trouve que ce procédé ne permettrait pas de débugguer le cas échéant en relevant le niveau des notices dans le php.ini.
ex 3 :
$strMaVariable = 'Ma phrase : '.@$aMonArray[0];
Voila, donc ma question est : Est-ce que le fait de tester la présence d'un offset pour un tableau est forcément judicieux sachant que ça peut avoir tendance à complexifier la lecture du code et que ça a un impact sur les performances ?Merci pour vos réponses.