Les meilleures pratiques pour l'utilisation de PHP magiques Constantes
-
28-09-2019 - |
Question
Quelles sont les meilleures pratiques pour l'utilisation de la magie Constantes de PHP, comme __LINE__
, __FILE__
, __FUNCTION__
, __CLASS__
et __METHOD__
?
Par exemple, je utilisation __LINE__
et __CLASS__
pour localiser l'erreur SQL comme ceci:
$result = mysql_query($query)
or die("Error SQL line ".__LINE__ ." class ".__CLASS__." : ".mysql_error());
Est-ce une pratique acceptable?
La solution
La pratique vous montrer a deux défauts:
-
Vous ne montrez pas le fichier l'erreur se produit dans - vous devriez avoir un très structure de fichiers stricte qui associe des classes de fichiers 1: 1 pour que cela soit utile
-
__CLASS__
vous montrer le mauvais résultat si l'erreur se produit dans une classe héritée. Utilisezget_class($this)
pour obtenir la classe actuelle réelle.
Autre que cela, l'utilisation de ces constantes est parfaitement acceptable. Notez que
-
__FUNCTION__
et__CLASS__
ont été ajoutés en PHP 4.3 -
__METHOD__
est disponible depuis PHP 5.0.0 -
__DIR__
et__NAMESPACE__
sont disponibles depuis PHP 5.3.
Autres conseils
Le but de ces constantes est le débogage et la journalisation. C'est exactement ce que vous faites.
__FILE__
peut également être utilisé pour les chemins de fichiers relatifs (par exemple dirname(__FILE__)
).
Le seul conseil que je peux donner est que toutes les constantes magiques sont définies. Ainsi, en cas de doute, utilisez if(defined('__MAGIC_CONSTANT__'))