荣耀v30|3分钟短文:Laravel 编程中优雅地添加定义常量

引言
laravel妥妥的到处都是面向对象了 , 以前流程处理的PHP代码 , 很少见到踪影了 ,为什么?大型应用实在是难以维护 , 所有代码设计必须有规有矩了 。 今天我们说一说 ,如何在代码中定义常量 。
学习时间
在laravel中 , 在 .env 文件内定义常量当然是可以的 , 但是env文件 ,尽量作为环境变量存储使用 , 且线上一般不需要修改 。 这是全局有效的 。
如果是全局的配置项 , 可以使用 define 函数 , 比如下面的代码:
define('OPTION_ATTACHMENT' 13);
define('OPTION_EMAIL' 14);
define('OPTION_MONETERY' 15);
define('OPTION_RATINGS' 16);
define('OPTION_TEXTAREA' 17);
这样写固然可以 , 但是不方便程序的管理 , 功能分散 , 代码凌乱 。 比较好的一个实践 ,是把这些配置参数 , 写在配置文件内 , 然后使用laravel框架提供的 Config 类 , 读取这些数据 。
在config目录下 , 比如新建 constants.php 文件 , 然后写入下面这些配置项:
return [
'options' => [
'option_attachment' => '13'
'option_email' => '14'
'option_monetery' => '15'
'option_ratings' => '16'
'option_textarea' => '17'
;
由于配置文件在框架加载中是全局有效的 , 所有在程序的任何地方 , 都可以像下面这样调用:
Config::get('constants.options');
Config::get('constants.options.option_attachment');
非常直观好用 。 唯一需要注意的是 , 你得记得住键名 。
类的属性
在面向对象代码中 , 如果常量类型数据作用域仅限于某个类 , 及其继承者 ,那么可以将这部分数据定义为类的属性 , 提供后续访问 。
比如有下面这个类定义:
namespace App;
class MyApp {
const MYCONST = 'val';
如果不想引用的时候总是要写命名空间 , 那么可以设置到系统的关联表内 。 在 config/app.php 文件内写入下述代码:
'aliases' => [
'MyApp' => App\\MyApp::class
那么在控制器 , 或者模型 , 或者blade模板内 , 都可以这样使用
MyApp::MYCONST
返回的就是 MyApp类属性的值 。
写在最后
本文介绍了三种定义全局变量的方法 。 其实我们之前的文章中还提到 ,还可以使用自定义文件 , 然后手动配置到 conposer.json 的 files 文件加载项内 ,那么系统在引导启动的时候 , 也会全局加载 。
如果全局的常量 , 我们推荐写到配置文件; 如果是局部作用的常量 , 我们推荐写到类属性内 。
Happy coding :-)
我是@程序员小助手 , 持续分享编程知识 , 欢迎关注 。
推荐阅读
- 3分钟就能做好的营养早餐,味道鲜美口感好,小孩爱吃极了!
- 鸡蛋这样做太香了,不用蒸不用煎,早餐端上桌,3分钟就光盘,香
- 早餐迷上吃饼,不揉面不擀面,3分钟出锅,比包子油条好吃多了
- 最下饭的快手菜! 3分钟就能出锅, 连吃3大碗饭都嫌少!
- 花卷不要再蒸着吃了,试试着样做,3分钟就出锅,宣软又酥脆!
- 比烧烤还好吃孜然鱿鱼须,香辣可口,3分钟学会,吃上就停不下来
- 安乐死过山车|全球第一个安乐死过山车,3分钟结束生命,至今无人活着下来!
- 成本不足4元,盐都不放,上桌3分钟光盘,不愧是经典名菜
- 3分钟学会5种丸子的做法,超全,照着做成功率极高!
- 冰箱里刚拿出的冻肉,千万别拿水泡!教你1招,3分钟把冻肉解冻
