ThinkPHP3.2框架自定义配置和加载用法示例


Posted in PHP onJune 14, 2018

本文实例讲述了ThinkPHP3.2框架自定义配置和加载用法。分享给大家供大家参考,具体如下:

有时候我们会有一些规则定义每个数字对应的实际内容,比如说在下拉菜单的时候:

<select name="reasonAndType" id="">
  <option value="1">查询物流</option>
  <option value="2">办理退货</option>
  <option value="3">咨询退货</option>
  <option value="4">咨询佣金</option>
  <option value="5">咨询规则</option>
  <option value="0">其他</option>
</select>

ThinkPHP3.2框架自定义配置和加载用法示例←实际效果

ThinkPHP3.2框架自定义配置和加载用法示例←数据库存的效果

ThinkPHP3.2框架自定义配置和加载用法示例←显示的时候。

这个例子里,实际显示的是汉字,实际的value值是数字,等我们向数据库存的时候也是存数字,等我们从数据库获取的时候也是取数字,显示的时候也是显示汉字;

所以我们需要一个类似字典的东西,它定义了那个数字对应的汉字是什么,定义的实际意义是什么;

用数据库能够实现这个效果,但我们不用,因为对数据库的操作开销太大;

如果是普通的PHP环境,我们可以把规则单独存到一个文件里,内容是一个数组:

type.PHP

$type = array(
'1' => '查询物流',
'2' => '办理退货',
'3' => '咨询退货',
'4' => '咨询佣金',
'5' => '咨询规则',
'0' => '其他'
);

就像上面代码那样,定义好之后,存成一个文件,当我们需要调用这个这个规则的时候,就include或者require,然后直接用$type这个变量去找就行了,比如:

require_once('type.php');
echo $type[1]; //输出'查询物流'
foreach($type as $k => $v){ //直接打印出最上面的下拉菜单代码,
echo "<option value = '{$k}' >{$v}</option>";
}

如果在ThinkPHP,要是想引入文件,只能用绝对路径,在include和require用__APP__或者__ROOT__快捷入口是不行的,U()造链函数我没试,应该是可以实现的。

还有一种实现方式,也是我在这里推荐的,就是直接把这套规则定义为这个网站的配置文件,当我们用的时候,用C()加载配置函数把这个数组加载出来赋给一个变量就好了。

上代码了:

把你定义的规则放到conf下,这是私有配置文件,只有Home这个入口的才生效,也可以放到公共配置文件下,细节可以去查手册。

return array(
'REASON_AND_TYPE' => array(
'1' => '查询物流',
'2' => '办理退货',
'3' => '咨询退货',
'4' => '咨询佣金',
'5' => '咨询规则',
'0' => '其他'
)
);

注意加上return;

注意,格式,return一个数组,键名是大写的(为了好看),键值是你要定义的东西,在这里我们定义的是一个数组。

修改config.php文件

<?php
return array(
//'配置项'=>'配置值'
'DB_TYPE' => 'mysqli', // 数据库类型
'DB_HOST' => 'localhost', // 服务器地址
'DB_NAME' => 'kefu', // 数据库名
'DB_USER' => 'root', // 用户名
'DB_PWD' => 'root', // 密码
'DB_PORT' => '', // 端口
'DB_PREFIX' => '', // 数据库表前缀
'LOAD_EXT_CONFIG' => 'reasonAndType', //这是我们自己添加的,LOAD_EXT_CONFIG键名固定,键值是你的php文件的文件名,那个数组名字在这里就不用管了
);

这就算配置好了。

下面讲调用这套规则:

$reasonAndTypeX = C('REASON_AND_TYPE');
//直接用数组名字就可以了,C()函数能加载配置里的键名所代表的值,赋给变量

注意,C()函数的里面的值,是reasonAndType这个文件的值。

var_dump($reasonAndTypeX);

就会输入这个数组的内容

array(
'1' => '查询物流',
'2' => '办理退货',
'3' => '咨询退货',
'4' => '咨询佣金',
'5' => '咨询规则',
'0' => '其他'
);

这样就完成了自定义配置文件的设置和加载。

如果‘REASON_AND_TYPE'没有配置,则会返回一个null值;

当然,你也可以设置默认值,代码如下:

// 如果REASON_AND_TYPE尚未设置的话,则返回default_config字符串
C('my_config',null,'default_config');

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
Windows下PHP5和Apache的安装与配置
Sep 05 PHP
玩转虚拟域名◎+ .
Oct 09 PHP
PHP动态创建Web站点的方法
Aug 14 PHP
PHP spl_autoload_register实现自动加载研究
Dec 06 PHP
百度地图API应用之获取用户的具体位置
Jun 10 PHP
PHP实现Soap通讯的方法
Nov 03 PHP
PHP实现下载断点续传的方法
Nov 12 PHP
php获取客户端电脑屏幕参数的方法
Jan 09 PHP
php求一个网段开始与结束IP地址的方法
Jul 09 PHP
PHP实现合并discuz用户
Aug 05 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
Dec 17 PHP
浅谈thinkphp5 instance 的简单实现
Jul 30 PHP
thinkPHP框架实现多表查询的方法
Jun 14 #PHP
php微信开发之关注事件
Jun 14 #PHP
thinkPHP框架动态配置用法实例分析
Jun 14 #PHP
php微信开发之谷歌测距
Jun 14 #PHP
php微信开发之图片回复功能
Jun 14 #PHP
php微信开发之音乐回复功能
Jun 14 #PHP
php微信开发之关键词回复功能
Jun 13 #PHP
You might like
一个比较简单的PHP 分页分组类
2009/12/10 PHP
php使用curl抓取qq空间的访客信息示例
2014/02/28 PHP
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
php使用递归函数实现数字累加的方法
2015/03/16 PHP
PHP合并discuz用户脚本的方法
2015/08/04 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
PHP实现的分解质因数操作示例
2018/08/01 PHP
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
JQuery弹出炫丽对话框的同时让背景变灰色
2014/05/22 Javascript
javascript框架设计读书笔记之字符串的扩展和修复
2014/12/02 Javascript
浅谈js的setInterval事件
2014/12/05 Javascript
nodejs实现获取某宝商品分类
2015/05/28 NodeJs
JS中dom0级事件和dom2级事件的区别介绍
2016/05/05 Javascript
纯js实现手风琴效果代码
2020/04/17 Javascript
JS验证input输入框(字母,数字,符号,中文)
2017/03/23 Javascript
Vue2.0 多 Tab切换组件的封装实例
2017/07/28 Javascript
微信小程序实现的贪吃蛇游戏【附源码下载】
2018/01/03 Javascript
Javasript设计模式之链式调用详解
2018/04/26 Javascript
vue引入axios同源跨域问题
2018/09/27 Javascript
图文详解vue框架安装步骤
2019/02/12 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
详解vue中v-model和v-bind绑定数据的异同
2020/08/10 Javascript
跟老齐学Python之集合的关系
2014/09/24 Python
通过数据库向Django模型添加字段的示例
2015/07/21 Python
200行自定义python异步非阻塞Web框架
2017/03/15 Python
python正则表达式之对号入座篇
2018/07/24 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
Python实现钉钉订阅消息功能
2020/01/14 Python
基于Pycharm加载多个项目过程图解
2020/01/19 Python
html5通过postMessage进行跨域通信的方法
2017/12/04 HTML / CSS
就业协议书样本
2014/08/20 职场文书
一年级数学上册复习计划
2015/01/17 职场文书
教师年度考核自我评鉴
2015/08/11 职场文书
优秀毕业生主要事迹材料
2015/11/04 职场文书
五年级语文教学反思
2016/03/03 职场文书
python实现简单区块链结构
2021/04/25 Python