构建可配置PHP应用程序的正确方式
发布:smiling 来源: PHP粉丝网 添加日期:2013-11-27 21:43:29 浏览: 评论:0
本文举例说明了创建可配置 PHP 应用程序的几种方法。文中也探讨了应用程序中理想的配置点,并在应用程序过分可配置和过分封闭之间寻求一个平衡点。
假如计划让其他人或公司可以使用您的 PHP 应用程序,需要确保该程序是可配置的。至少,要答应用户以一种安全的方式设置数据库登录及密码,从而使其中的材料不会对外公开。
本文展示了几种用于存储配置设置及编辑这些设置的技术。另外,文中也为哪些元素需要设为可配置以及如何避免陷入配置过度或者配置不足的困境提供了指导。
使用 INI 文件进行配置
PHP 内建了对配置文件的支持。这是通过 php.ini 文件这样的初始化文件(INI)机制实现的,在 php.ini 文件中定义了数据库连接超时或会话如何存储等常量。假如愿意的话,可以在这个 php.ini 文件中为应用程序定制配置。为了说明,我将下列代码行添加到 php.ini 文件中。
myapptempdir=foo
然后,我编写了一个小 PHP 脚本来读取这个配置项,如清单 1 所示。
清单 1. ini1.php
- <?php
- function get_template_directory()
- {
- $v = get_cfg_var( "myapptempdir" );
- return ( $v == null ) ? "tempdir" : $v;
- }
- echo( get_template_directory()."n" );
- ?>
当在命令行中运行这段代码时,得到如下结果:
- % php ini1.php
- foo
- %
太棒了。但为什么不能用标准的 INI 函数来获取 myapptempdir 配置项的值呢?我研究了一下,发现在大多数情况下,定制配置项不能使用这些方法来获取。然而,使用 get_cfg_var 函数却是可以访问的。
为使这个方法更加简单,将对变量的访问封装在第二个函数中,该函数使用配置键名及一个缺省值作为参数,如下所示。
清单 2. ini2.php
- function get_ini_value( $n, $dv )
- {
- $c = get_cfg_var( $n );
- return ( $c == null ) ? $dv : $c;
- }
- function get_template_directory()
- {
- return get_ini_value( "myapptempdir", "tempdir" );
- }
这是对如何访问 INI 文件的一个很好的概括,所以,假如要使用一个不同的机制或将这个 INI 文件存储到其他位置,就不需要为更改大量的函数而大费周折。
我不推荐使用 INI 文件作为应用程序的配置,这有两个理由。首先,虽然这样做较轻易读取 INI 文件,但却几乎不可能安全地写 INI 文件。所以这样做只适合于只读配置项。第二,php.ini 文件在服务器的所有应用程序上共享,所以我认为特定于应用程序的配置项不应该写在该文件中。
需要对 INI 文件了解什么呢?最重要的是如何重置 include 路径来添加配置项,如下所示。
清单 3. ini3.php
- <?php
- echo( ini_get("include_path")."n" );
- ini_set("include_path",
- ini_get("include_path").":./mylib" );
- echo( ini_get("include_path")."n" );
- ?>
在本例中,我将我的本地 mylib 目录添加到了 include 路径中,所以能够从该目录中 require PHP 文件,而不需要将该路径添加到 require 语句中。
PHP 中的配置
通常对于在 INI 文件中存储配置条目的一个替代办法是使用一个简单的 PHP 脚本来保持数据。如下是一个样例。
清单 4. config.php
- <?php
- # Specify the location of the temporary directory
- #
- $TEMPLATE_DIRECTORY = "tempdir";
- ?>
使用该常量的代码如上所示。
Tags: 构建 配置 应用程序
- 上一篇:PHP缓存技术详谈
- 下一篇:利用PHP自定义错误处理器处理出错信息
相关文章
- ·windows 下 php curl 的支持配置方法(2013-12-06)
- ·php mail()邮件发送配置方法(2014-01-22)
- ·emlog中使用memcache缓存配置修改方法(2014-06-17)
- ·PHP安全之防止.inc配置信息暴露(2014-08-21)
- ·php中safe_mode安全模式配置详解(2014-08-22)
- ·PHP操作MongoDB配置与学习笔记(2014-08-28)
- ·swfupload配置与使用方法(2014-08-28)
- ·php SQLite数据库的配置方法详解(2014-09-10)
- ·phpMyAdmin配置登录用户名与密码教程(2014-09-10)
- ·php配置mysql与怎么测试配置数据库成功(2014-09-10)
- ·PHP正确配置mysql 详解教程(2014-09-10)
- ·深入分析PHP PDO配置及使用方法(2015-04-08)
- ·PHPMailer配置ssl连接smtp服务器失败解决办法(2015-04-15)
- ·PHP连接MSSQL2008/2005数据库(SQLSRV)配置(2015-04-15)
- ·MAC通过MacPorts配置 PHP54+PHP FPM+NGINX+MYSQL5.5(2015-12-10)
- ·PHP APC缓存配置、使用详解(2020-10-19)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)