php开发文档怎么写(php扩展开发参考手册)
1. 介绍
1.1 介绍
福哥的tfums项目的配置文件其实就是一个php程序文件,使用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;
tfconfig::set("default", array(
'driver'=>tfdo::t_mysql,
'host'=>"mysql",
'port'=>3306,
'user'=>"tfums",
'pass'=>"abcdef",
'db'=>"tfums",
'charset'=>"utf8",
), "tfdo");
tfconfig::set("default", array(
'host'=>"redis",
'port'=>6379,
'pass'=>"tongfu.net",
'db'=>"tfums",
), "tfredis");
tfconfig::set("default", array(
'host'=>"elasticsearch",
'port'=>9200,
'db'=>"tfums"
), "tfelasticsearch");
tfconfig::set("charset", "utf-8", "system");
tfconfig::set("domain", "192.168.1.168", "system");
tfconfig::set("apiurl", "http://php-nginx-tfums/api/", "system");
tfconfig::set("outurl", "http://192.168.1.168/tfums/", "system");
tfconfig::set("baseuri", "/", "system");
tfconfig::set("systemloglevel", tflog::t_info, "system");
tfconfig::set("projectaespk", md5("福哥的tfums系统基于tfphp框架"), "system");
tfconfig::set("smtpargs", array(
'host'=>"smtp.tongfu.net",
'port'=>25,
'user'=>"tfums@tongfu.net",
'pwd'=>"cba321",
'email'=>"tfums@tongfu.net"
), "system");
tfconfig::set("imagedirargs", array(
"dirs"=>array(
"img3"=>array(
"path"=>"/tongfu.net/web/tfhomeimg3/",
"requesturi"=>"/img3/"
)
),
"default"=>"img3"
), "system");
tfconfig::set("defaultuserimages", array(
'icon'=>"/images/usericon.jpg",
'style'=>"/images/userstyle.jpg",
), "system");
tfconfig::set("bindemailtemplateargs", array(
'subject'=>"亲爱的{username},请激活你的tfums系统账号的绑定邮箱",
'body'=>"亲爱的{username},你好!<br/>
<br/>
请点击下面的链接完成邮箱绑定操作!<br/><br/>
<a href="{link}" target="_blank">{link}</a><br/>
<br/>
tfums<br/>
tfums@tongfu.net<br/>"
), "system");
2.2 数据源
这个里面有三个数据源,分别是mysql数据源、redis数据源和es数据源,它是一个数组形式。
tfconfig::set("default", array(
'driver'=>tfdo::t_mysql,
'host'=>"mysql",
'port'=>3306,
'user'=>"tfums",
'pass'=>"abcdef",
'db'=>"tfums",
'charset'=>"utf8",
), "tfdo");
tfconfig::set("default", array(
'host'=>"redis",
'port'=>6379,
'pass'=>"tongfu.net",
'db'=>"tfums",
), "tfredis");
tfconfig::set("default", array(
'host'=>"elasticsearch",
'port'=>9200,
'db'=>"tfums"
), "tfelasticsearch");
2.3 环境参数
这里是一个系统环境参数,都是一些简单字符串参数。
tfconfig::set("charset", "utf-8", "system");
tfconfig::set("domain", "192.168.1.168", "system");
tfconfig::set("apiurl", "http://php-nginx-tfums/api/", "system");
tfconfig::set("outurl", "http://192.168.1.168/tfums/", "system");
tfconfig::set("baseuri", "/", "system");
tfconfig::set("systemloglevel", tflog::t_info, "system");
tfconfig::set("projectaespk", md5("福哥的tfums系统基于tfphp框架"), "system");
2.4 功能参数
功能参数针对的一些系统功能的参数,一般情况下都是数组类型的参数,甚至还会有多级参数。
tfconfig::set("smtpargs", array(
'host'=>"smtp.tongfu.net",
'port'=>25,
'user'=>"tfums@tongfu.net",
'pwd'=>"cba321",
'email'=>"tfums@tongfu.net"
), "system");
tfconfig::set("imagedirargs", array(
"dirs"=>array(
"img3"=>array(
"path"=>"/tongfu.net/web/tfhomeimg3/",
"requesturi"=>"/img3/"
)
),
"default"=>"img3"
), "system");
tfconfig::set("defaultuserimages", array(
'icon'=>"/images/usericon.jpg",
'style'=>"/images/userstyle.jpg",
), "system");
tfconfig::set("bindemailtemplateargs", array(
'subject'=>"亲爱的{username},请激活你的tfums系统账号的绑定邮箱",
'body'=>"亲爱的{username},你好!<br/>
<br/>
请点击下面的链接完成邮箱绑定操作!<br/><br/>
<a href="{link}" target="_blank">{link}</a><br/>
<br/>
tfums<br/>
tfums@tongfu.net<br/>"
), "system");
3. ini格式配置文件
ini格式虽然也可以通过section和key、value实现一个二维数组的结构,但是ini格式毕竟没有php语言那样的*。所以福哥要将tfums项目的配置文件转换为ini格式需要一些技巧。
3.1 配置文件
[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[pass] = tongfu.net
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[img3] = /tongfu.net/web/tfhomeimg3/
imagedirsrequesturi[img3] = /img3/
imagedirdefault = img3
smtp[host] = smtp.tongfu.net
smtp[port] = 25
smtp[user] = tfums@tongfu.net
smtp[pwd] = cba321
smtp[email] = tfums@tongfu.net
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/>
tfums<br/>
tfums@tongfu.net<br/>"
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[pass] = tongfu.net
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[img3] = /tongfu.net/web/tfhomeimg3/
imagedirargsrequesturi[img3] = /img3/
imagedirargsdefault = img3
3.4 功能参数
功能参数都是一个一个的数组,这个也可以直接转换过来。
这里面有一个特殊的情况,就是邮件模板的正文的一个多行字符串,这个需要用双引号括起来才行,而且内容里面的双引号需要转义一下。
smtp[host] = smtp.tongfu.net
smtp[port] = 25
smtp[user] = tfums@tongfu.net
smtp[pwd] = cba321
smtp[email] = tfums@tongfu.net
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/>
tfums<br/>
tfums@tongfu.net<br/>"
3.5 ini转php数组
这个比较简单,就是一行代码的事情。
$webiniarr = parse_ini_file(web_inf_root_path. 'conf/web.ini', true);
转换后的php数组是这样的结构。
4. 总结
今天福哥带着童鞋们将tfums项目的配置文件从一个php格式的程序文件改造成了ini格式的文档,使用ini文档后的配置文件看起来更加像一个配置文件了,ini文档更加独立,可读性更好。
上一篇: C#的循环语句集锦及案例详解
下一篇: Spring循环依赖的三种方式(推荐)