【发布时间】:2010-06-21 17:40:53
【问题描述】:
所以我有一个 PHP 文件,我用它来定义我的所有常量,但现在想要灵活地使用 XML。
示例 PHP 配置文件
define("LOGIN_URL", "secure_login.php");
define("REDIRECT", "redirect.php");
define("MAPPED_VALUE_GREEN", "object_green");
define("MAPPED_VALUE_KEY", "object_key_12345");
我要做的是:
<scriptNameConfig>
<urls>
<url alias="LOGIN_URL" scriptname="secure_login.php" location="optional/path/to/file"/>
<url alias="REDIRECTL" scriptname="redirect.php" location="optional/path/to/file"/>
</urls>
<mapping>
<mapped name="MAPPED_VALUE_GREEN" data="object_green"/>
<mapped name="MAPPED_VALUE_KEY" data="object_key_12345"/>
</mapping>
</scriptNameConfig>
现在没关系,但我想使用 XPATH 从这种类型的配置文件中提取值,但希望它足够动态,所以我不必对函数进行硬编码
这是我的基类
class ParseXMLConfig {
protected $xml;
public function __construct($xml) {
if(is_file($xml)) {
$this->xml = simplexml_load_file($xml);
} else {
$this->xml = simplexml_load_string($xml);
}
}
}
我像这样扩展它
class ParseURLS extends ParseXMLConfig {
public function getUrlArr($url_alias) {
$attr = false;
$el = $this->xml->xpath("//url[@alias='$url_alias']");
if($el && count($el) === 1) {
$attr = (array) $el[0]->attributes();
$attr = $attr['@attributes'];
}
return $attr; // this will return the element array with all attributes
}
}
但问题是,如果我想在 confie 文件中引入一个新值,我必须为 XPATH 添加某种函数来解析它。想知道是否有人知道如何进行此通用/动态操作,因此在 XML 配置文件中添加/更改或删除元素/属性会更容易且编码更少。
感谢您提供任何提示/示例/代码/想法, -菲尔
【问题讨论】:
标签: php xml configuration dynamic