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?

¿Fue útil?

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. Uso get_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.

docs

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__'))

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top