Podría decirse que una constante es un valor que no puede cambiar durante la ejecución de nuestro script, o una variable que no varia.
En una clase podemos definit constantes, veamos inmediatamente cómo:
class Application
{
const VERSION = '1.0.0';
}
Como puedes ver no usamos el símbolo de dólar $. La forma correcta de acceder a una constante es utilizar el operador :: (doble dos puntos), de la siguiente forma:
echo Application::VERSION; // Imprime 1.0.0
Dato curioso, este operador
::es conocido como operador de resolución de ámbito o Paamayim Nekudotayim en hebreo significa directamente "doble dos puntos". De hecho, es común llamarlo simplemente "Paamayim Nekudotayim".
Hay otras formas de acceder a una constante de clase:
- Asignando el nombre de la clase a una variable y luego accediendo a la constante:
$app = 'Application';
echo $app::VERSION; // Imprime 1.0.0
- Creando una instancia de la clase y accediendo a la constante desde el objeto:
$instance = new Application();
echo $instance::VERSION; // Imprime 1.0.0
- Desde dentro de un método de la clase utilizando
self::.
class Application
{
const VERSION = '1.0.0';
public function getVersion()
{
return self::VERSION;
}
}
$app = new Application();
echo $app->getVersion(); // Imprime 1.0.0
- Desde una clase hija utilizando
parent::.
class Base
{
const VERSION = '1.0.0';
}
class Application extends Base
{
public function getVersion()
{
return parent::VERSION;
}
}
$app = new Application();
echo $app->getVersion(); // Imprime 1.0.0
- Desde una clase hija utilizando
static::.
class Base
{
const VERSION = '1.0.0';
}
class Application extends Base
{
public function getVersion()
{
return static::VERSION;
}
}
$app = new Application();
echo $app->getVersion(); // Imprime 1.0.0
Las constantes pueden tener cualquier visibilidad: public, protected o private. Por defecto, si no se especifica ninguna visibilidad, la constante será public.
class Application
{
public const PUBLIC_CONSTANT = 'I am public';
protected const PROTECTED_CONSTANT = 'I am protected';
private const PRIVATE_CONSTANT = 'I am private';
}
Y se aplica la misma teoría de visibilidad que con las propiedades y métodos de una clase que ya vimos anteriormente. Puedes repasar este artículo sobre Visibilidad en PHP: public, protected y private si tienes dudas al respecto.
Última actualización: 04-02-2026