您所在的位置: 首页>>开发>>Web>>PHP>>

构建可配置PHP应用程序的正确方式(2)

  • 摘要:本文举例说明了创建可配置PHP应用程序的几种方法。本文展示了几种用于存储配置设置及编辑这些设置的技术。另外,文中也为哪些元素需要设为可配置以及如何避免陷入配置过度或者配置不足的困境提供了指导。
  • 标签:PHP  配置

PHP 中的配置

通常对于在 INI 文件中存储配置条目的一个替代办法是使用一个简单的 PHP 脚本来保持数据。如下是一个样例。

清单 4. config.php

<?php
# Specify the location of the temporary directory
#
$TEMPLATE_DIRECTORY = "tempdir";
?>

使用该常量的代码如下所示。

清单 5. php.php

<?php
require_once 'config.php';

function get_template_directory()
{
 global $TEMPLATE_DIRECTORY;
 return $TEMPLATE_DIRECTORY;
}

echo( get_template_directory()."\n" );
?>

该代码首先包含配置文件(config.php),接着就可以直接使用这些常量了。

使用这项技术有很多优势。首先,如果某些人仅仅浏览 config.php 文件,该页面是空白的。所以可以将 config.php 放到相同的文件中,并作为 Web 应用程序的根。第二,在任何编辑器中都可编辑,并且在一些编辑器中甚至具备语法着色及语法检查功能。

这项技术的缺点是,这是一个像 INI 文件一样的只读技术。将数据从此文件中提取出来是轻而易举的,但在该 PHP 文件中调整数据却很困难,在一些情况下甚至是不可能的。

下面的替代方法显示了如何编写在本质上既可读又可写的配置系统。

文本文件

前面的两个例子对于只读配置条目都是合适的,但对于既读又写的配置参数来说又如何呢?首先,看看清单 6 中的文本配置文件。

清单 6. config.txt

# My application's configuration file
Title=My App
TemplateDirectory=tempdir

这是同 INI 文件相同的文件格式,但我自己编写了辅助工具。为此,我创建了自己的 Configuration 类,如下所示。

清单 7. text1.php

<?php
class Configuration
{
 private $configFile = 'config.txt';
 private $items = array();
 function __construct() { $this->parse(); }
 function __get($id) { return $this->items[ $id ]; }
 function parse()
 {
$fh = fopen( $this->configFile, 'r' );
while( $l = fgets( $fh ) )
{
 if ( preg_match( '/^#/', $l ) == false )
 {
preg_match( '/^(.*?)=(.*?)$/', $l, $found );
$this->items[ $found[1] ] = $found[2];
 }
}
fclose( $fh );
 }
}

$c = new Configuration();

echo( $c->TemplateDirectory."\n" );
?>

该代码首先创建了一个 Configuration 对象。该构造函数接下来读取 config.txt 并用解析过的文件内容来设置局部变量 $items。

该脚本随后寻找 TemplateDirectory,这并没有在对象中直接定义。因此,使用设置成 'TemplateDirectory' 的 $id 来调用神奇的 __get 方法,__get 方法针对该键返回 $items 数组中的值。

这个 __get 方法特定于 PHP V5 环境,所以此脚本必须在 PHP V5 下运行。实际上,本文中所有的脚本都需要在 PHP V5 下运行。


共5页: 上一页 [1] 2 [3] [4] [5] 下一页
【内容导航】
主流品牌防火墙配置
华为路由器配置
Linux/Solaris服务器的安全配置
Solaris 10 配置管理
交换机的安全配置与安全漫谈
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有