Las mejores prácticas para el uso de constantes mágicas de PHP
-
28-09-2019 - |
Pregunta
¿Cuáles son las mejores prácticas para el uso de las constantes de la magia de PHP, como __LINE__
, __FILE__
, __FUNCTION__
, __CLASS__
y __METHOD__
?
Por ejemplo el uso que __LINE__
y __CLASS__
para localizar el error SQL como esto:
$result = mysql_query($query)
or die("Error SQL line ".__LINE__ ." class ".__CLASS__." : ".mysql_error());
¿Es esta una práctica aceptable?
Solución
La práctica demuestra que tiene dos defectos:
-
No está mostrando el archivo el error se produce en - que tendría que tener un muy estricta estructura de archivos que se asigna a las clases de archivos de 1: 1 para que esto sea útil
-
__CLASS__
le mostrará el resultado incorrecto si el error se produce en una clase heredada. Usoget_class($this)
para conseguir la clase de corriente real.
Aparte de eso, el uso de estas constantes es perfectamente aceptable. Tenga en cuenta que
-
__FUNCTION__
y__CLASS__
se añadieron en PHP 4.3 -
__METHOD__
está disponible a partir de PHP 5.0.0 -
__DIR__
y__NAMESPACE__
están disponibles a partir de PHP 5.3.
Otros consejos
El propósito de estas constantes se depuración y registro. Esto es exactamente lo que está haciendo.
__FILE__
también se puede utilizar para rutas de archivos relativos (por ejemplo dirname(__FILE__)
).
El único consejo que puedo dar es que no todas las constantes mágicas se definen. Por lo tanto, en caso de duda, el uso if(defined('__MAGIC_CONSTANT__'))