1. > 电脑手机 >

php文档(2020年php凉透了)

1. 介绍

1.1 介绍

福哥的TFUMS项目的配置文件其实就是一个PHP程序文件,使用PHP程序文件作为项目的配置文件虽然更加灵活,但是感觉上差一点。

php文档(2020年php凉透了)php文档(2020年php凉透了)


Java项目使用XML作为项目的配置文件,XML格式可以容纳更复杂的配置参数,阅读起来也很清晰,但是PHP读取XML格式的文档有点先天不足,XML格式无法转换为PHP的数组,而且PHP解析XML格式的效率也不高。

PHP语言解析器的配置文件是INI格式的文件,INI格式不如XML格式可以适应更为复杂的配置参数,但是它也足够使用了,最关键是的PHP解析INI格式非常的方便,一个parse_ini_file函数便可以将INI文档里面的配置参数转换为一个PHP的数组,由于是内建函数效率还有保障,就是它了~~

2. PHP格式配置文件

福哥先给出现在的TFUMS项目的配置文件,这是一个标准的PHP程序文件,里面通过TFConfig对象设置项目参数。

2.1 配置文件

use TFPHPDatabaseSQLTFDO; use TFPHPSystemTFLog; use TFPHPSystemTFConfig; TFConfigset("default", array(     'driver'=>TFDOT_MYSQL,     'host'=>"mysql",     'port'=>3306,     'user'=>"tfums",     'pass'=>"abcdef",     'db'=>"tfums",     'charset'=>"utf8", ), "TFDO"); TFConfigset("default", array(     'host'=>"redis",     'port'=>6379,     'pass'=>"",     'db'=>"tfums", ), "TFRedis"); TFConfigset("default", array(     'host'=>"elasticsearch",     'port'=>9200,     'db'=>"tfums" ), "TFElasticsearch"); TFConfigset("charset", "UTF-8", "system"); TFConfigset("domain", "192.168.1.168", "system"); TFConfigset("apiUrl", "http://php-nginx-tfums/api/", "system"); TFConfigset("outUrl", "http://192.168.1.168/tfums/", "system"); TFConfigset("baseUri", "/", "system"); TFConfigset("systemLogLevel", TFLogT_INFO, "system"); TFConfigset("projectAESPK", md5("福哥的TFUMS系统基于TFPHP框架"), "system"); TFConfigset("SMTPArgs", array(     'host'=>"",     'port'=>25,     'user'=>"",     'pwd'=>"cba321",     'email'=>"" ), "system"); TFConfigset("imageDirArgs", array(     "dirs"=>array(         "img3"=>array(             "path"=>"",             "requestUri"=>"/img3/"         )     ),     "default"=>"img3" ), "system"); TFConfigset("defaultUserImages", array(     'icon'=>"/images/usericon.jpg",     'style'=>"/images/userstyle.jpg", ), "system"); TFConfigset("bindEmailTemplateArgs", array(     'subject'=>"亲爱的{userName},请激活你的TFUMS系统账号的绑定邮箱",     'body'=>"亲爱的{userName},你好!br/> br/> 请点击下面的链接完成邮箱绑定操作!br/>br/> a href="{link}" target="_blank">{link}/a>br/> br/> TFUMSbr/> " ), "system");

2.2 数据源

这个里面有三个数据源,分别是MySQL数据源、Redis数据源和ES数据源,它是一个数组形式。

TFConfigset("default", array(     'driver'=>TFDOT_MYSQL,     'host'=>"mysql",     'port'=>3306,     'user'=>"tfums",     'pass'=>"abcdef",     'db'=>"tfums",     'charset'=>"utf8", ), "TFDO"); TFConfigset("default", array(     'host'=>"redis",     'port'=>6379,     'pass'=>"",     'db'=>"tfums", ), "TFRedis"); TFConfigset("default", array(     'host'=>"elasticsearch",     'port'=>9200,     'db'=>"tfums" ), "TFElasticsearch");

2.3 环境参数

这里是一个系统环境参数,都是一些简单字符串参数。

TFConfigset("charset", "UTF-8", "system"); TFConfigset("domain", "192.168.1.168", "system"); TFConfigset("apiUrl", "http://php-nginx-tfums/api/", "system"); TFConfigset("outUrl", "http://192.168.1.168/tfums/", "system"); TFConfigset("baseUri", "/", "system"); TFConfigset("systemLogLevel", TFLogT_INFO, "system"); TFConfigset("projectAESPK", md5("福哥的TFUMS系统基于TFPHP框架"), "system");

2.4 功能参数

功能参数针对的一些系统功能的参数,一般情况下都是数组类型的参数,甚至还会有多级参数。

TFConfigset("SMTPArgs", array(     'host'=>"",     'port'=>25,     'user'=>"",     'pwd'=>"cba321",     'email'=>"" ), "system"); TFConfigset("imageDirArgs", array(     "dirs"=>array(         "img3"=>array(             "path"=>"",             "requestUri"=>"/img3/"         )     ),     "default"=>"img3" ), "system"); TFConfigset("defaultUserImages", array(     'icon'=>"/images/usericon.jpg",     'style'=>"/images/userstyle.jpg", ), "system"); TFConfigset("bindEmailTemplateArgs", array(     'subject'=>"亲爱的{userName},请激活你的TFUMS系统账号的绑定邮箱",     'body'=>"亲爱的{userName},你好!br/> br/> 请点击下面的链接完成邮箱绑定操作!br/>br/> a href="{link}" target="_blank">{link}/a>br/> br/> TFUMSbr/> " ), "system");

3. INI格式配置文件

INI格式虽然也可以通过section和key、value实现一个二维数组的结构,但是INI格式毕竟没有PHP语言那样的自由。所以福哥要将TFUMS项目的配置文件转换为INI格式需要一些技巧。

3.1 配置文件

php文档(2020年php凉透了)php文档(2020年php凉透了)


[TFDO] default[driver] = MySQL default[host] = mysql default[port] = 3306 default[user] = root default[pass] = abcdef default[db] = tfums default[charset] = utf8 [TFRedis] default[host] = redis default[port] = 6379 default&# default[db] = tfums [TFElasticsearch] default[host] = elasticsearch default[port] = 9200 default[db] = tfums [system] charset = UTF-8 domain = 192.168.1.168 apiUrl = http://php-nginx-tfums/api/ outUrl = http://192.168.1.168/tfums/ baseUri = / systemLogLevel = info projectAESPK = 86fbd7cec5a89700760c167e85acdab8 imageDirsPath&# imageDirsRequestURI[img3] = /img3/ imageDirDefault = img3 SMTP&# SMTP[port] = 25 SMTP&# SMTP[pwd] = cba321 SMTP&# defaultUserImages[icon] = /images/usericon.jpg defaultUserImages[style] = /images/userstyle.jpg bindEmailTemplate[subject] = 亲爱的{userName},请激活你的TFUMS系统账号的绑定邮箱 bindEmailTemplate[body] = "亲爱的{userName},你好!br/> br/> 请点击下面的链接完成邮箱绑定操作!br/>br/> a href="{link}" target="_blank">{link}/a>br/> br/> tfumsbr/> "

3.2 数据源

INI文档可以通过section和key实现一个二维数组结构,这个和PHP的group+数组格式相符合,没有问题!

INI文档的key也可以用方括号设置数组格式,parse_ini_file函数会把它转换成一个数组参数。

[TFDO] default[driver] = MySQL default[host] = mysql default[port] = 3306 default[user] = root default[pass] = abcdef default[db] = tfums default[charset] = utf8 [TFRedis] default[host] = redis default[port] = 6379 default&# default[db] = tfums [TFElasticsearch] default[host] = elasticsearch default[port] = 9200 default[db] = tfums

3.3 环境参数

环境参数大多数参数都是一个字符串,可以直接设置。还有imageDirArgs是一个多为数组,这个INI格式搞不定了。

福哥的解决方法是将多维数组拆开为多个参数,当然相应的项目里的程序也要做改动才行。

charset = UTF-8 domain = 192.168.1.168 apiUrl = http://php-nginx-tfums/api/ outUrl = http://192.168.1.168/tfums/ baseUri = / systemLogLevel = info projectAESPK = 86fbd7cec5a89700760c167e85acdab8 imageDirArgsPath&# imageDirArgsRequestURI[img3] = /img3/ imageDirArgsDefault = img3

3.4 功能参数

功能参数都是一个一个的数组,这个也可以直接转换过来。

这里面有一个特殊的情况,就是邮件模板的正文的一个多行字符串,这个需要用双引号括起来才行,而且内容里面的双引号需要转义一下。

SMTP&# SMTP[port] = 25 SMTP&# SMTP[pwd] = cba321 SMTP&# defaultUserImages[icon] = /images/usericon.jpg defaultUserImages[style] = /images/userstyle.jpg bindEmailTemplate[subject] = 亲爱的{userName},请激活你的TFUMS系统账号的绑定邮箱 bindEmailTemplate[body] = "亲爱的{userName},你好!br/> br/> 请点击下面的链接完成邮箱绑定操作!br/>br/> a href="{link}" target="_blank">{link}/a>br/> br/> tfumsbr/> "

3.5 INI转PHP数组

这个比较简单,就是一行代码的事情。

$webIniArr = parse_ini_file(WEB_INF_ROOT_PATH. 'Conf/web.ini', true);

转换后的PHP数组是这样的结构。

php文档(2020年php凉透了)php文档(2020年php凉透了)


4. 总结

今天福哥带着童鞋们将TFUMS项目的配置文件从一个PHP格式的程序文件改造成了INI格式的文档,使用INI文档后的配置文件看起来更加像一个配置文件了,INI文档更加独立,可读性更好。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, website.service08@gmail.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息