快速业务通道

用PHP开发健壮的代码:有效地使用变量,第2部分

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
号分开的简单的名称-值对来编辑该文件。配置文件类似于 清单 5。以 # 开头的行的文本被作为注释处理。

清单 5. 样本配置文件

# This is sample a configuration file.
admin_fname = Amol
admin_lname = Hatwar
admin_email = amolhatwar@consultant.com
admin_login = admin
admin_pass = secretstring
# File Ends

意思清楚吗?是的,的确如此……既然可以用PHP解析文件,为什么让用户编辑配置文件呢?事实上,这是人们非常期望的。请记住,您的应用程序必须在对用户隐藏所有复杂性的同时,仍然让他知道他能控制该应用程序。

您可以编写负责解析工作的函数,这样您可以在任何地方使用它而不用做任何修改。让我们将该任务分为一些更简单的步骤:

逐行地读取文件

丢弃一行中#号字符后的所有内容

以等号为界,将一行分为两个字符串,并丢弃等号

除去字符串中的额外空格

相应声明变量

要编写最后一步,只有使用可变变量才行。 清单 6显示了代码:

清单 6. 解析函数

<?php
/* conf_parser.php */
/* Give the filename with path info whenever possible. */
function conf_parse($file_name) {
// @ in front makes the function quiet. Error messages are not printed.
$fp = @fopen($file_name, "r") or die("Cannot open $file_name");
while ($conf_line = @fgets($fp, 1024)) {
$line = ereg_replace("#.*contentquot;, "", $line);  // Do stripping after hashes.
if ($line == "") continue;  // Drop blank lines resulting from the previous step.
list($name, $value) = explode (''='', $line);  // Drop ''='' and split.
$name = trim($name);  // Strip spaces.
$name= trim($value);  // Define the said variable. 
}
fclose($fp) or die("Can''t close file $file_name");
}
?>

用正则表达式除去 # 号。尽管这里的表达式很简单,但要知道复杂的正则表达式会消耗大量的 CPU 时间。此外,为每页反复地解析配置文件不是一个好的决策。更好的选择是:使用变量或定义语句将已解析的输出存储为PHP脚本。我倾向于使用 define() 函数进行定义,因为一旦设置了值就不能在运行时更改它。可以在 参考资料中找到一个能够根据您的需要加以修改的实现。

结束语

既然知道了如何有效地使用变量,那么您可以着手编写一些较大的程序了。在本系列的下一篇文章中,我将研究函数和 API 设计。在下次见面以前,希望您编程愉快!

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号