En PHP 5 hay sin duda alguna muchísimo más soporte en la Programación Orientada a Objetos con respecto a PHP 4 , una de ellas es el acceso a propiedades y métodos que nos permite a hacer clases muchas más robustas.
Desde PHP 5 es posible la definición de constantes de clase. Ejemplo:
Código :
class MyClass
{
const MY_CONSTANT = "Constante de Clase";
}
echo MyClass::MY_CONSTANT;Sin duda esto nos sirve de mucho en una aplicación orientada a objetos en php. A pesar de lo bueno que es esto tiene sus "limitaciones", pues aunque parezca una idea loca a veces no sabemos en tiempo de ejecución como se llama el nombre de la clase y aqui es donde nos viene el problema con las constantes de clase, porque ellas no pueden ser accedidas directamente desde una instancia. Ejemplo:
Código :
class MyClass
{
const MY_CONSTANT = "Constante de clase";
}
$instance = new MyClass();
echo $instance::MY_CONSTANT; //Error
echo $instance->MY_CONSTANT; //un intento desesperado pero da errorPara solventar este problema deberíamos definir las constantes comos propiedades estáticas o simplemente como propiedades, pero eso atentaría con la definición de la propiedad pues es una constante no es variable. La solución a esto sin atentar con la definición de la propiedad es apoyarnos de los métodos mágicos que nos ofrece PHP. Ejemplo:
Código :
class MyClass
{
const MY_CONSTANT = "Constante de clase";
private function __get($name)
{
if(defined("self::$name"))
{
return constant("self::$name");
}
trigger_error ("$name isn't defined");
}
}
$instance = new MyClass();
echo $instance->MY_CONSTANT; //¡¡esto funciona!!Más información sobre esto:
Constantes De la Clase [PHP.net]

voy a tomar en cuanta eso
Por Fresqui el 05 de Marzo de 2007
[En PHP 5 hay sin duda alguna muchísimo más soporte en la Programación Orientada a Objetos con respecto a PHP 4 , una de ellas es el acceso a propiedades y métodos que nos permite a hacer clases muchas más robustas. Desde PHP 5 es posible la definición de constantes de clase...]
Por MorphX el 05 de Marzo de 2007
Insisto, un gran aporte
Por RetroFOX el 07 de Marzo de 2007
Por GersonM el 07 de Marzo de 2007
Por Cecilia el 05 de Abril de 2007
Por Ronald el 13 de Julio de 2007
Por pitxon el 07 de Mayo de 2008
Por Paamayim Nekudotayim el 14 de Octubre de 2008
Por a77icu5 el 19 de Julio de 2009
Por John_Anderton el 28 de Noviembre de 2009
Por jonathan (opticmega) el 27 de Julio de 2010
Por <a href="ht el 04 de Noviembre de 2010
Por josho el 13 de Marzo de 2011
se debe definir asi
class MyClass
{
const MY_CONSTANT = "Constante de clase";
}
y acceder asi :
echo MyClass::MY_CONSTANT; // y funiona de 10 y no da Error
Por elliot el 27 de Octubre de 2011
Las propiedades estáticas no pueden ser accedidas a través del objeto utilizando el operador flecha (->)
Invocar métodos no estáticos estáticamente genera un Warning a nivel de E_STRICT.
Por Elliot el 27 de Octubre de 2011
A partir de PHP 5.3.0, es posible hacer referencia a una clase usando una variable. El valor de la variable no puede ser una palabra clave (por ej., self, parent y static).