前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >3分钟短文:Laravel 编程中优雅地添加定义常量

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

作者头像
程序员小助手
发布2020-09-01 11:41:47
1K0
发布2020-09-01 11:41:47
举报
文章被收录于专栏:程序员小助手

引言

laravel妥妥的到处都是面向对象了,以前流程处理的PHP代码,很少见到踪影了, 为什么?大型应用实在是难以维护,所有代码设计必须有规有矩了。今天我们说一说, 如何在代码中定义常量。

学习时间

在laravel中,在 .env 文件内定义常量当然是可以的,但是env文件, 尽量作为环境变量存储使用,且线上一般不需要修改。这是全局有效的。

如果是全局的配置项,可以使用 define 函数,比如下面的代码:

代码语言:javascript
复制
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 文件,然后写入下面这些配置项:

代码语言:javascript
复制
return [
    'options' => [
        'option_attachment' => '13',
        'option_email' => '14',
        'option_monetery' => '15',
        'option_ratings' => '16',
        'option_textarea' => '17',
    ]
];

由于配置文件在框架加载中是全局有效的,所有在程序的任何地方,都可以像下面这样调用:

代码语言:javascript
复制
Config::get('constants.options');
Config::get('constants.options.option_attachment');

非常直观好用。唯一需要注意的是,你得记得住键名。

类的属性

在面向对象代码中,如果常量类型数据作用域仅限于某个类,及其继承者, 那么可以将这部分数据定义为类的属性,提供后续访问。

比如有下面这个类定义:

代码语言:javascript
复制
namespace App;

class MyApp {
   const MYCONST = 'val';
}

如果不想引用的时候总是要写命名空间,那么可以设置到系统的关联表内。在 config/app.php 文件内写入下述代码:

代码语言:javascript
复制
'aliases' => [
  'MyApp' => App\MyApp::class,
]

那么在控制器,或者模型,或者blade模板内,都可以这样使用

代码语言:javascript
复制
MyApp::MYCONST

返回的就是 MyApp类属性的值。

写在最后

本文介绍了三种定义全局变量的方法。其实我们之前的文章中还提到, 还可以使用自定义文件,然后手动配置到 conposer.json 的 files 文件加载项内, 那么系统在引导启动的时候,也会全局加载。

如果全局的常量,我们推荐写到配置文件;如果是局部作用的常量,我们推荐写到类属性内。

Happy coding :-)

我是@程序员小助手,持续分享编程知识,欢迎关注。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员小助手 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 学习时间
  • 类的属性
  • 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档