2010-11-26 8 views
6

¿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__?Las mejores prácticas para el uso de la magia Constantes de PHP

Por ejemplo yo uso __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?

+0

¿Cómo podemos ayudarle? – jasonbar

+8

¿No estás seguro de lo que quieres decir con "mejor uso"? El mejor uso es usarlos cuando se necesitan, ¿no es así? :) –

+0

@Brad: thx para la edición –

Respuesta

2

La práctica demuestra que tiene dos defectos:

  • usted no está demostrando el archivo se produce el error en - que tendría que tener una muy estricta archivo estructura que asigna clases a archivos 1: 1 para que esto sea útil

  • __CLASS__ le mostrará el resultado incorrecto si el error ocurre en una clase heredada. Use get_class($this) para obtener la clase actual.

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

+2

Corrección: '__DIR__' se agregó en PHP 5.3 no 5.0. –

1

El propósito de estas constantes es la depuración y el registro. Esto es exactamente lo que estás haciendo.

__FILE__ también se puede utilizar para rutas relativas de archivos (por ejemplo, dirname(__FILE__)).

+0

Desde PHP 5.3 hay una constante mágica '__DIR__' que es igual a' dirname (__ FILE __) '. – Crozin

1

El único consejo que puedo dar es que no todas las constantes mágicas están definidas. Por lo tanto, en caso de duda, utilice if(defined('__MAGIC_CONSTANT__'))

+2

Algunas constantes mágicas no están definidas si está utilizando menos el PHP5 – stillstanding

Cuestiones relacionadas