Facebook Google+


Declarar constantes de clase en PHP
#1
Estimados de que forma me recomiendan declarar constantes de clase en PHP ? uso define() y accedo con self::nombre_constante o creo propiedades 'private static' o las defino en un archivo de configuracion externo y lo incluyo?
 
Reply
#2
Si utilizas define() dentro del método de una clase no estás creando una constante de clase, sino una constante global de la misma manera que si lo hicieras fuera de la clase. Por lo tanto si intentas acceder a ella con self::nombre_constante; tendrás un error.
    
Código PHP:
class MyClass {
    const 
CLASS_CONSTANT 'Hello world';
    function 
__construct() {
        
define("GLOBAL_CONSTANT""Hello world");
        print(
GLOBAL_CONSTANT);
        print(
self::CLASS_CONSTANT);
        print(
CLASS_CONSTANT);        
        print(self::GLOBAL_CONSTANT);
    }

   
Resultado:
   
Código PHP:
/*
Helo world
Helo world
Error: Undefined constant
Error: Undefined constant
*/ 
   
Y desde fuera de la clase:
   
Código PHP:
print(GLOBAL_CONSTANT); // "Helo world"

print(MyClass::CLASS_CONSTANT); // "Helo world"

print(CLASS_CONSTANT);  // Error: Undefined constant 

print(self::GLOBAL_CONSTANT); // Error: Undefined constant 
  
No hay una manera recomendada, debes utilizar uno u otro método según tus necesidades.
[Imagen: 1489128820_fbsnVWR5Pg5WrzX.png]
 
Reply
  


Salto de foro:


Browsing: 1 invitado(s)