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' => AppMyApp::class,
]
那么在控制器,或者模型,或者blade模板内,都可以这样使用
MyApp::MYCONST
返回的就是 MyApp类属性的值。
写在最后
本文介绍了三种定义全局变量的方法。其实我们之前的文章中还提到, 还可以使用自定义文件,然后手动配置到 conposer.json 的 files 文件加载项内, 那么系统在引导启动的时候,也会全局加载。
如果全局的常量,我们推荐写到配置文件;如果是局部作用的常量,我们推荐写到类属性内。
Happy coding :-)
我是@程序员小助手,持续分享编程知识,欢迎关注。
- Docker Hub工作流程-Docker for Web Developers(6)
- PHP+MySQL代码部署在Linux(Ubuntu)上注意事项
- mac系统上使用压缩包版的mysql(非安装版)
- oracle的decode函数在mysql的实现
- Python的解码和编码
- 原生Ajax总结
- 多个知名化妆品牌现假官网,域名保护该受重视
- JavaScript操作Cookie
- Windows下Go环境安装
- Angular定义服务-Learn By Doing
- JS魔法堂:不完全国际化&本地化手册 之 理論篇
- mysql替换某个字段中的某个字符
- Angular企业级开发(1)-AngularJS简介
- PHP在Apache下500错误
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- python 解决多核处理器算力浪费的现象
- python实现单例模式的5种方法
- java序列化和序列化ID的作用
- python函数式编程
- 让Vim打造成强大的IDE,附_vimrc的配置和使用
- python 中面向切面编程AOP和装饰器
- HashMap&ConcurrentHashMap&HashTable
- python中的垃圾回收机制
- python中值传递还是引用传递?
- 基于Docker+Jenkins+Git的集成开发环境搭建
- python 函数的本质理解
- centOS(离线) off-line install docker-ce
- Java 工厂 Simple Factory&Factory&Abstract Factory
- python 性能的优化
- python中列表的常见操作