tipos metodos herencia example clases php class-constants

metodos - public function php



visibilidad constante de la clase php (7)

¿Podemos establecer la visibilidad de la clase constante? Por ej.

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

para esta clase podemos escribir

public const CONST_VALUE = ''A constant value'';

o

private const CONST_VALUE = ''A constant value'';

o

protected const CONST_VALUE = ''A constant value'';


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


Actualización: se han agregado modificadores de visibilidad para las constantes en PHP 7.1 (lanzado el 1 de diciembre de 2016). Ver el RFC: Clase de soporte Visibilidad constante .

La sintaxis se ve así:

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



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

La sintaxis de 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 lamentablemente la final no está permitida aquí.


Una alternativa sería utilizar un método constante, por ejemplo,

private static function gravitationalConstant() { return 9.81; }

Cita del libro Refactoring de Fowler :

Este lenguaje es menos familiar para los programadores basados ​​en C, pero es muy familiar para los Smalltalkers (que no tenían constantes en su idioma). En general, no tiendo a usar esto en Java, ya que es menos idiomático para el lenguaje. Sin embargo, si necesita reemplazar el rendimiento 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 ...)