PHP中的动态常量?

前端之家收集整理的这篇文章主要介绍了PHP中的动态常量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法动态创建类的常量?我知道这听起来有点奇怪,但让我解释一下我要做的事情:

>我有一个Enum类,其属性由静态const定义定义
>此类扩展了PHP SplEnum类
>而不是在代码中键入这些定义中的每一个,我希望有一个静态初始化程序转到数据库提取枚举值

也许像这样的事情:

@H_502_7@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; } } }

我认识到这实际上不会起作用,因为它没有设置CONST而是静态变量.也许我的整个想法都是头脑发达,而且有更好的技巧.无论如何,非常感谢任何实现最终目标的方法.

UPDATE

我认为对我的目标更加明确可能会有所帮助,因为我认为我对Constants的使用完全不是一个好的.基本上我想实现的是典型的枚举列表的要求:

>约束函数签名.我希望能够要求一组“值”作为函数的输入.例如:

公共函数do_something(ENUM_Types $type){}
>简单紧凑.在代码中使用时,允许使用简单紧凑的语法.例如,使用常量我可能会写一个条件语句,如:

if($my_var === ENUM_Types :: TypeA){}
>动态枚举.我希望这个枚举通过前端进行管理并存储在数据库中(我正在使用wordpress管理屏幕,以防万一有人关心).在运行时,这个“列表”应该从DB中拉出,并作为枚举(或实现上述目标的类似结构)提供给代码.

将单个“enum”值包装并实现(非静态)magic __get方法: @H_502_7@<?PHP class DynamicEnums { private static $singleton; private $enum_values; public static function singleton() { if (!self::$singleton) { self::$singleton = new DynamicEnums(); } return self::$singleton; } function __construct() { $this->enum_values = array( //fetch from somewhere 'one' => 'two','buckle' => 'my shoe!',); } function __get($name) { return $this->enum_values[$name]; //or throw Exception? } public static function values() { return self::singleton()->enum_values; //warning... mutable! } }

对于奖励积分,创建一个返回单身的(非OO)函数

@H_502_7@function DynamicEnums() { return DynamicEnums::singleton(); }

“DynamicEnums”的消费者看起来像:

@H_502_7@echo DynamicEnums::singleton()->one; echo DynamicEnums()->one; //can you feel the magic? print_r(DynamicEnums::values());

[编辑]更多的枚举.

原文链接:https://www.f2er.com/php/135097.html

猜你在找的PHP相关文章