2011-04-02 16 views
5

Ok esta es una pregunta estúpida, pero no puedo pensar en la razón exacta de que sea estúpido.PHP - asignar el valor de la función a la clase constante

en PHP cuando se define un nivel constante de clase como en:

const MY_CONSTANT = 'hello constant'; 

Por qué no puedes inicializar este valor con una función como

const MY_FILEPATH = dirname(dirname(__FILE__)) . '/heres-my-file.php'; 
+4

Bienvenido a SO. Esto ya se ha discutido en profundidad aquí: http://stackoverflow.com/questions/3960323/why-dont-php-attributes-allow-functions la respuesta es larga :) De todos modos, definitivamente no es posible, es posible que desee dejar es por eso. –

Respuesta

14

En resumen: Las constantes son reemplazados durante el análisis , pero las funciones se ejecutan durante la interpretación. El analizador simplemente no puede saber a qué debe establecer el valor del contenido.

+1

Hola, gracias. Ok ese tipo de sentido entonces. ¿Cuál es la mejor práctica para hacer este tipo de cosas, ya que debe suceder bastante, donde se requiere un valor constante, pero se define a partir de una llamada a la función o algo así. – David

1

Las constantes son inmutables. Por lo tanto, si las funciones pudieran cambiar el valor de una constante, no sería una constante.

+0

Sí, pero no estoy tratando de cambiar el valor de una constante, sino que estoy tratando de inicializarlo con el valor de una función. – David

+0

Entiendo lo que quieres decir. Sin embargo, si la función puede inicializar una constante, teóricamente podría cambiar su valor. Porque la constante se debe inicializar en la clase (si también se declaró en la clase). – Nabeel

+0

"si la función puede inicializar una constante, teóricamente podría cambiar su valor". Esto no tiene mucho sentido para mí. Si se inicializa una constante, es una constante. Si no se inicializa, no existe. Nunca hay un cambio. – KingCrunch

Cuestiones relacionadas