专门针对于如下格式的配置文件
conf.xml
<?xml version="1.0" encoding="UTF-8"?>
<conf>
<item name="user">bob</item>
<item name="pass">newpass</item>
<item name="host">localhost</item>
<item name="port">2389</item>
<item name="ip">127.0.0.1</item>
</conf>
Conf类的构造器接受一个文件路径,然后传递给simplexml_load_file(),它将得到的SimpleXmlElement对象放在$xml属性中,get方法使用XPath和给定的name属性来定位item并返回值。set改变已经存在的值或创建一个新项。最后write方法将新的配置项写入到配置文件中。
<?php
class Conf{
private $file;
private $xml;
private $lastmatch;
function __construct($file){
$this->file=$file;
$this->xml=simplexml_load_file($file);
}
function write(){
file_put_contents($this->file, $this->xml->asXML());
}
function get($str){
$matches=$this->xml->xpath("/conf/item[@name=\"$str\"]");
if(count($matches)){
$this->lastmatch=$matches[0];
return (string)$matches[0];
}
return null;
}
function set($key,$value){
if(!is_null($this->get($key))){
$this->lastmatch[0]=$value;
return;
}
$conf=$this->xml->conf;
$this->xml->addChild('item',$value)->addAttribute('name',$key);
}
}
$file="conf.xml";
$conf=new Conf($file);
$conf->set('port', '2389');
$conf->set('ip', '127.0.0.1');
$conf->write();
echo $conf->get('port');