Pregunta

¿Podemos establecer la visibilidad de la clase constante?
Para este ejemplo:

class MyClass {
    const CONST_VALUE = 'A constant value';
}

¿Podemos especificar?

public const CONST_VALUE = 'A constant value';

o

private const CONST_VALUE = 'A constant value';

o

protected const CONST_VALUE = 'A constant value';
¿Fue útil?

Solución

A partir de Php7.1 Los modificadores de visibilidad están permitidos para constantes de clase, en versiones anteriores no es posible establecer la visibilidad de las constantes en una clase. Siempre son públicos. Ver los comentarios en http://www.php.net/manual/en/language.oop5.constants.php para más información.

Otros consejos

ACTUALIZACIÓN: Se han agregado modificadores de visibilidad para constantes en PHP 7.1 (lanzado el 1 de diciembre de 2016). Ver el RFC: Visibilidad constante de la clase de soporte.

La sintaxis se ve así:

class ClassName {
    private const PRIVATE_CONST = 0;
    protected const PROTECTED_CONST = 0;
    public const PUBLIC_CONST = 0;
}

Una alternativa sería utilizar un método constante, p.

private static function gravitationalConstant() {
    return 9.81;
}

Citando de Libro de refactorización de Fowler:

Este modismo es menos familiar para los programadores basados ​​en C, pero es muy familiar para los Smalltalkers (que no tenían constantes en su lenguaje).En general, no suelo usar esto en Java ya que es menos idiomático para el lenguaje.Sin embargo, si necesita reemplazar el retorno simple con un valor calculado, entonces vale la pena cambiar el campo constante a un método constante.(Supongo que debería haber una refactorización para eso...)

En la última versión de PHP (PHP 7.1.0) estará disponible.

La sintaxis de la muestra era como.

class Token {
    // Constants default to public
    const PUBLIC_CONST = 0;

        // Constants then also can have a defined visibility
        private const PRIVATE_CONST = 0;
        protected const PROTECTED_CONST = 0;
        public const PUBLIC_CONST_TWO = 0;

        //Constants can only have one visibility declaration list
        private const FOO = 1, BAR = 2;
}

Consulte el siguiente enlace.https://wiki.php.net/rfc/class_const_visibility

Los modificadores no están permitidos para constantes en PHP. Puedes usar

public static $variable = "abc";

pero tristemente final no está permitido aquí.

Ahora es posible en Php 7.1 lanzado Alfa hoy que agrega Modificadores de visibilidad constante de clase

Es posible en Php 7.1.0. Por favor visita PHP RFC: Visibilidad constante de la clase de soporte

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top