¿Hay alguna forma de crear dinámicamente las constantes de una clase? Sé que esto suena un poco extraño, pero permítanme explicar lo que estoy tratando de hacer:Constantes dinámicas en PHP?
- tengo una clase de enumeración que sus atributos son definidos por estáticas
const
definiciones - Esta clase extiende la clase PHP SplEnum en lugar de
- tipo en cada una de estas definiciones en el código me gustaría tener un inicializador estático salir a la base de datos y tire de los valores enumerados
Tal vez algunas cosas como esta:
class myEnum extends SplEnum {
public static function init() {
$myNameValuePair = DB_Functions::get_enum_list();
foreach ($myNameValuePair as $name => $value) {
$const = array (self , $name);
$const = $value;
}
}
}
Reconozco que esto no funcionará, ya que no establece las variables estáticas de CONST. Tal vez toda mi idea es el cerebro del cabello y hay una mejor técnica para esto. De todos modos, cualquier método para lograr el objetivo final es muy apreciado.
ACTUALIZACIÓN
yo creo que puede ser útil a ser un poco más claro en mis objetivos, porque creo que es del todo posible que mi uso de constantes no es una buena idea. Básicamente quiero lograr es típico de los requisitos de la lista enumerada:
firmas de función Restringir. Quiero poder solicitar un "conjunto" de valores como entrada para una función. Por ejemplo:
función pública hacer_algo (ENUM_Types $ tipo) {}
simple y compacto. Permita una sintaxis simple y compacta cuando se usa en el código. Por ejemplo, con el uso de constantes que podría escribir una sentencia condicional algo como:
if ($ my_var === ENUM_Types :: TypeA) {}
enumeración dinámica. Me gustaría que esta enumeración se administre a través de la interfaz y se almacene en la base de datos (estoy usando pantallas de administración de WordPress para esto en caso de que a alguien le importe). En tiempo de ejecución, esta "lista" debe extraerse del DB y ponerse a disposición del código como una enumeración (o una estructura similar que logre los objetivos anteriores).
Por definición, una constante no puede ser dinámico. ¿Por qué no solo usar variables estáticas? – Matt
Bueno, sí, lo sé y es por eso que lo dije "podría parecer un poco extraño". Actualizaré un poco la pregunta para dejar más claro lo que intento lograr. – ken
En otras palabras ... no quiere constantes dinámicas, quiere enums dinámicos. – EthanB