PHP a son lot de surprises qui pimente notre vie de développeur : le code qui meurt d’un coup de namespace, strpos qui ne trouve pas sa chaîne et les tableaux qui se modifient sans qu’on y touche. Ca vous énerve vous aussi ? Alors, en 20 minutes, on va dresser un florilège des erreurs les plus vicieuses, comment les corriger et comment les garder loin de votre code. Attachez vos ceintures !
2. Agenda
1 heure
Top 10+ chausses-trappes PHP
Améliorez votre code dès maintenant
Ca peut attendre demain
3. QUI PARLE?
➤ Damien Seguy
➤ Directeur technique Exakat
➤ Analyse statique de code PHP
➤ Maison de retraite pour elephpant
4. Erreur tapie dans le code
Un puit de performances
Un outil pratique
La voie de l'éléphpant
🐞
🛠
🐘
🚀
5. La légende de strpos()
<?php
if (strpos($string, 'a')) { }
if (strpos($string, 'a') == 0) { }
if ($x = strpos($string, 'a')) { }
🐞
6. Comparaison strpos
<?php
// La seule comparaison possible pour 0/false
if (strpos($string, 'a') === false) { }
// Pas de 0, pas de confusion
if (strpos($string, 'a') == 2) { }
// strpos n'est pas la seule!
if (preg_match($regex, $string)) { }
🐘
44. Ne pas unset() les propriétés
<?php
class x {
public $y = 1;
}
$x = new x();
unset($x->y);
print_r($x);
?>
x Object
(
)
🐞
45. Ne pas unset() les propriétés
<?php
class x {
public $y = 1;
}
$x = new x();
$x->y = null;
var_dump(isset($x->y));
print_r($x);
?>
bool(false)
x Object
(
[y] =>
)
🐘
46. Ne pas unset() les propriétés
<?php
class x {
public $y = 1;
}
$x = new x();
$x->z = 3;
print_r($x);
?>
x Object
(
[y] => 1
[z] => 3
)
🛠