概观: PHP是一种跨平台的语言. 它是一个基于服务器的应用程序,所以我们必须思考的PHP软件的配置设置. 有创建配置PHP应用程序的各种方式. 配置灵活性是一个内置的功能在PHP. 但是,我们必须提出申请之前配置了解清楚的要求.
本文将讨论不同的PHP配置模式及其实施.
介绍:
有几种方法可以使PHP应用程序配置. 也有理想的配置点,这是行业标准. 这些要点将决定一个PHP应用程序是否过配置或太封闭. 如果PHP应用程序对某些客户端安装那么它应该是足够的配置以满足定制要求. 有存储配置设置中提供不同的技术和选项的下面提到.
- INI文件
- PHP文件
- 文字档
- XML文件
- 数据库
每一个选择都有它的优点和缺点. 现在,所有这些选择都将被发现以观察哪种技术是准确的运行的应用程序.
ini文件模式: PHP已经内置了对配置文件的支持. 该任务是在初始化执行 (此) 这被称为php.ini文件文件夹机构. 该文件定义的常量, 数据库连接参数, 会话相关的值等. 但是,自定义配置参数也可以包含在php.ini文件中按您的应用需求. 让我们检查一个简单的例子.
让我添加一个简单的行 php.ini中 文件.
myappworkdir = phpbuilder
清单1: 在php.ini文件sample.php显示的条目
<?PHP
功能get_work_directory()
{
$V = get_cfg_var( “myappworkdir ” );
return ( $v == NULL ) ? “WORKDIR” : $v;
}
回声( get_work_directory().”\Ň” );
?>
现在让我在命令提示符下运行此. 它将显示值,如下所示.
% PHP sample.php
phpbuilder
%
我们必须记住,不建议为你的应用程序配置条目INI文件. 主要的原因在于,INI文件可以容易地读出,但写入它以安全的方式,几乎是不可能. 因此,作为一个后果, INI文件适用于只读操作. 如果应用程序需要读取和写入操作, 那么INI文件作为配置模式必须避免. 第二个原因是,php.ini文件在服务器上运行的所有应用程序之间共享, 这样,应用程序特定项不推荐.
PHP脚本文件 模式: PHP脚本也可用于存储配置项. 这还不算什么,但持有的配置参数的PHP文件. 第一步是创建一个PHP文件,然后添加常数根据应用需求. 这些常数可以直接从其他文件进行访问.
下面的示例显示了保持常数和第二个PHP文件访问值的一个脚本文件.
Listing 2: 样品展示配置条目 (configscript.php)
<?PHP
# 工作目录位置
#
$WORK_DIRECTORY = “WORKDIR”;
?>
Listing 3: .样本显示访问配置值 (test.php的)
<?PHP
require_once ‘configscript.php’;
功能get_work_directory()
{
全球$ WORK_DIRECTORY;
返回$ WORK_DIRECTORY;
}
回声( get_work_directory().”\Ň” );
?>
现在,让我们讨论这种设计模式的优势. First, 该文件是新创建的所以它只是一个空白文件,您可以添加参数. 你也可以把PHP脚本文件相同的文件作为根. 第二个优点是,该文件可以通过使用任何标准编辑器进行编辑.
随着的优点也有一些缺点还. 这种模式也像前一节中所讨论的INI文件的只读图案. 这样的读出操作是很容易的,但写几乎是难以执行.
文本文件模式: 我们之前的两种模式分别适用于只读操作. 但是,如果应用程序需要读取和写入的配置项那么我们应该寻找其他的选择. 在这里,我将讨论有关文本配置模式.
让我们看一个例子实现文本文件模式.
以下是其配置条目的第一个文本文件. 这是一个简单 (文本) 其配置项文件.
Listing 4: 样本显示文本文件条目 (的config.txt)
# 应用程序的文本配置文件
标题=我的应用程序在phpbuilder
WorkDirectory = WORKDIR
接下来的部分是一个自定义的配置类访问文本配置文件条目.
Listing 5: 配置值的样品显示检索 (test.php的)
<?PHP
类TextConfiguration
{
private $configFileText = ‘config.txt’;
私人$ itemslist =阵列();
功能__construct() { $这个->parseFile(); }
功能__get($ID) { 返回$这个 - >itemslist[ $ID ]; }
功能parseFile()
{
$FL = FOPEN( $这个->configFileText, 'R’ );
而( $L =与fgets( $FL ) )
{
如果 ( 的preg_match( '/ ^#/', $升 ) ==假 )
{
的preg_match( '/ ^(.*?)=(.*?)$/’, $升, $发现 );
$这个->itemslist[ $发现[1] ] = $发现[2];
}
}
FCLOSE( $FL );
}
}
$T =新TextConfiguration();
回声( $T->WorkDirectory。”\Ň” );
?>
在这个类中,我们创建一个配置类对象. 在此之后,构造读取文本的配置文件的内容,然后局部变量填充了被分析的数据. 在下一步骤的脚本查询的 “WorkDirectory’ 最后它显示值.
如果PHP文件在命令提示符下运行,那么以下结果将显示.
% PHP test.php的
WORKDIR
%
在类似的方式写入动作也可以在相同的文字的配置文件上执行. 我们需要添加自定义配置类的一些更多的方法来将数据保存在文本文件中. 虽然编码部分是多一点在这种方法中,但它同时支持的读取和写入操作.
XML文件 模式: 在上一节中,我讨论与读写operations.XML文件支持的文本文件,图形可以作为PHP配置模式的另一种选择. XML文件也被广泛地用作在各种应用中的配置文件,以便它是一种工业标准. In addition to this, XML文件是基于标签的,有很多标准的编辑器可用于编辑XML文件.
让我们先检查其中包含的参数值的配置文件.
Listing6: 样本显示XML配置文件 (config.xml中)
<?xml version=”1.0″?>
<config>
<标题>我在phpbuilder应用</标题>
<WorkDirectory>WORKDIR</WorkDirectory>
</config>
以下是从XML配置文件中访问数据更新的配置类.
Listing7: xml配置文件样本显示用法 (testxml.php)
<?PHP
类XMLConfiguration中
{
private $configFileXML = ‘config.xml’;
私人$ itemslist =阵列();
功能__construct() { $这个->解析(); }
功能__get($ID) { 返回$这个 - >itemslist[ $ID ]; }
功能parseXML()
{
$DOC =新的DOMDocument();
$doc->加载( $这个->configFileXML );
$CN = $ doc->的getElementsByTagName( “config” );
$节点= $ CN->项目(0)->的getElementsByTagName( “*” );
的foreach( $节点作为$节点 )
$这个->itemslist[ $节点->节点名称 ] = $于节点>的nodeValue;
}
}
$C =新XMLConfiguration中();
回声( $C->WorkDirectory。”\Ň” );
?>
xml配置模式是更清洁,更容易实现. 如果上面的代码在命令提示符下运行,那么它会显示与上面相同的输出. 上面的示例仅显示了读操作. 写入动作也可以通过加入一些更多的方法进行.
数据库 模式: 现在,我们将讨论这是基于数据库的最后PHP配置模式. 该数据库将保存配置值. 和自定义类已被如上设计成访问数据库模式和检索值.
基于数据库的配置模式基本上是一种混合模式. 它是文本和数据库图案的混合物. 配置类被设计为从文本文件中读取的初始值,然后访问数据库更新相关的条目. 但是,这种方法具有足够的灵活性在各种应用中使用.
结论: 在这篇文章中,我们已经触及的PHP配置模式各个方面. 我们也明白,一个PHP应用程序的配置部分必须在设计阶段考虑. PHP应用程序可以是根据功能的各种类型的, so the selection of a particular configuration pattern is a key factor for the success. 我希望你理解的PHP配置模式在实际应用中的基本概念及其实施.