引言

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 :-)

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

define定义的函数如何引用_3分钟短文:Laravel 编程中优雅地添加定义常量相关推荐

  1. mvc 前段定义变量_3分钟短文 | Laravel blade模板里优雅地定义PHP变量

    引言 Laravel秉持MVC的设计理念,在V = view 中放置视图相关的内容.特别是 blade 模板引擎带来了很强大的解析方式. 与传统的PHP与HTML写作一团方式不容,Blade 使用特定 ...

  2. python中的dict函数什么意思_3分钟搞懂Python中dict函数的含义是什么

    Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度. 举个例子,假设要根据同学的名字查找对应的 ...

  3. sql查询无结果返回空_3分钟短文 | Laravel 查询结果检查是不是空,5个方法你别用错...

    引言 Laravel 提供了 Eloquent ORM 对象用于操作数据库,将其进行抽象方便操作. 因为设计的灵活度,大家在使用Model查询数据集的时候,会面临结果为空,记录不存在的问题, 那么如何 ...

  4. laravel $request 多维数组取值_3分钟短文 | Laravel 内3种数据校验的写法,你喜欢哪一个?...

    引言 web应用程序公开访问几乎没有不带用户交互的,难免要接收用户输入的奇奇怪怪的东西.对于后端程序,必须对输入的内容进行有效性过滤. 这就是本文的重点,说一说laravel中输入请求的校验. 学习时 ...

  5. python中函数的调用_慢步python,编程中函数的概念,python中函数的声明和调用

    函数,曾经是一个很高大尚的概念.笔者是在高中数学里认识的函数,先是从y=2x+3 这条代数式开始的.y是因变量,x是自变量,y因为x取值的变化而变化. 再后来式子变成这样:f(x)=2x+3,f(x) ...

  6. php定义一个学生类_3分钟短文 | PHP获取函数参数名,和类定义的常量,都要反射...

    引言 本文我们分享两个知识点,算是PHP编程中的稍微高阶一点的用法,一般不会用到.可是有了这个思路之后,你对于自己的冗余代码,应该会有想法了. 获取函数形参列表 我们在写程序的时候,不可能所有功能逻辑 ...

  7. php 时间格式化_3分钟短文 | PHP获取函数的代码片段,唯有反射最高效

    引言 为了演示上一篇我们所说的PHP中反射的应用,本篇接着讲反射的应用.因为其特性,是操作函数和方法的,是函数的操作者,类的操作者,所以显得格外重要. 我们从一个小需求出发,假如有一段这样的代码: f ...

  8. 加密生成指定长度_3分钟短文 | PHP伪随机Token生成器,实地测试,效果感人!

    引言 我们经常可能会用到邀请码,邮件验证码,或者需要使用unique 字符串标记用户属性的情况. 今天我们且不说高深的"全局唯一ID"的生成方案,我们说一个简单的,如何生成一个唯一 ...

  9. c++如何获取文件时间_3分钟短文 | PHP 如何优雅地获取文件扩展名?别再explode了

    引言 通常文件扩展名在Linux系统上是没有意义的,仅是用来标记该文件属于哪种类型?但是大多数,我们从浏览器上访问Web程序.提交给服务器的文件是带有扩展名的,比如,图片上传,文件上传就是比较经典的一 ...

  10. input位置_3分钟短文 | PHP 数组任意位置插入新元素,你是怎么处理的?

    引言 接着我们这个系列的文章说.本文我们聊一聊 PHP 数组,如何在任意位置插入新元素.因为内置函数并没有提供类似 array_insert(&$array, $pos, $items) 的函 ...

最新文章

  1. java 套接字关联的通道_Java 通道教程 – NIO 2.0
  2. 美国空军把将人工智能纳入杀伤链列为最高优先事项之一
  3. ViewConfiguration.getScaledTouchSlop () 用法
  4. 小工匠聊架构-超高并发秒杀系统设计 05_服务端性能优化
  5. python实现一个简单的加法计算器_Python tkinter实现简单加法计算器代码实例
  6. 计算沙盒中一个目录的大小
  7. C# 从Excel中读取时间数据
  8. J2EE数据库后台开发步骤(附HQL使用教程)
  9. 数据导入导出 、 表记录基本操作 、 查询及匹配条件 、 多表查询 、
  10. 【安全】通过LAM(ldap-account-manager)来管理OpenLDAP
  11. 纳尼?我的Gradle build编译只要1s
  12. 第九次作业(杨辉三角)
  13. VPP-20.09版本安装教程(联网版)
  14. 在某网课学习前端笔记整理js篇31-ajax
  15. vid在c语言中的作用,——PVID的作用及和VID的区别
  16. 如何练就超强的学习能力?这才是最好的答案
  17. 下一代降维打击黑科技现身中国
  18. 本科计算机科学与技术毕业论文题目,(计算机科学与技术本科毕业论文选题.doc...
  19. 如何为戴尔灵越15 5559加装内存条和固态硬盘
  20. 纽约大学计算机与科学,纽约大学计算机科学专业好吗?

热门文章

  1. jenkins2 pipeline高级
  2. j$(function() j$(document).ready 区别
  3. C++ 从零单排(2)-基础知识二
  4. LeetCode 33——搜索旋转排序数组
  5. H3C CLI基础笔记(交换机,链路聚合-DHCP)
  6. Java制作证书的工具keytool用法总结
  7. 幸福框架:可扩展的、动态的、万能的 编号生成器
  8. to teacher eulogy
  9. 极速理解设计模式系列:24.解释器模式(Interpreter Pattern)
  10. SqlBulkCopy做大数据插入