请教大家php中的常量定义与获取等问题 [ 2.0 版本 ]
大家好,请问各位都是如何解决下面这个需求的。
比如 有model类user。其中定义常量
const ADMIN = 0; //管理
const USER = 1; //用户
const CLIENT = 2; //客户
实际数据库存储的时候 肯定是 0、1、2的值了。
但是在页面上显示的时候,需要的是 管理、用户、客户
请问各位是如何快速、优雅的 获取这些汉字内容的呢?
最佳答案
其他 5 个回答
-
chocoboxxf 回答于 2015-10-23 10:55 举报
如果常量数量多、汉字内容需要在线修改或增加的话,一般在数据库中建一个字典表,保存id和字面的映射关系,但平时变化不大可以写到缓存中,从缓存中读取,当内容发生变化时再更新缓存。
如果常量数量不多、汉字内容也不需要在线调整的话,可以新建一个统一管理id和字面关系的配置文件,比如放在common/config/constants.php里:
<?php return [ 'role' => [ 0 => '管理', 1 => '用户', 2 => '客户', ], ];
然后,在common/config/params.php里增加constants项:
<?php return [ 'constants' => require(__DIR__ . '/constants.php'), ];
在Model类(User)里可以增加一个配置索引项与constants中的内容关联:
const ADMIN = 0; //管理 const USER = 1; //用户 const CLIENT = 2; //客户 public static $constantIndex = 'role'; // 与constants.php里的配置组对应
这样,在业务代码中要获取id对应的字面就可以这样:
$adminRoleLabel = Yii::$app->params['constants'][User::$constantIndex][User::ADMIN];
或
foreach ($users as $user) { $roleLabel = Yii::$app->params['constants'][User::$constantIndex][$user->role]; }
-
a15989186502 回答于 2015-10-27 10:32 举报
$param=0;//0管理;1用户;2客户; if(user::ADMIN===$param)echo '管理'; if(user::USER===$param)echo '用户'; if(user::CLIENT===$param)echo '客户';
xjdata
注册时间:2011-12-07
最后登录:2024-05-05
在线时长:112小时38分
最后登录:2024-05-05
在线时长:112小时38分
- 粉丝23
- 金钱14169
- 威望75
- 积分16039