这个为什么会写入xml,$this->lastmatch[0]没有看到函数调用?return已经结束函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了这个为什么会写入xml,$this->lastmatch[0]没有看到函数调用?return已经结束函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2010字,纯文字阅读大概需要3分钟。
内容图文
![这个为什么会写入xml,$this->lastmatch[0]没有看到函数调用?return已经结束函数](/upload/InfoBanner/zyjiaocheng/207/dbdab31a93dd4278a69efdf67ccd582e.jpg)
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]; } } function set($key,$value){ if (!is_null($this->get($key))){ $this->lastmatch[0] = $value; //这个为什么会写入xml,$this->lastmatch[0]没有看到函数调用?return已经结束函数返回了 return; } $conf = $this ->xml ->conf; $this->xml->addChild('item',$value)->addAttribute('name',$key); }}$conf = new Conf('conf.xml');$conf->set('user','test');$conf->write();
- bob
- newpass
- localhost
这个为什么会写入xml,$this->lastmatch[0]没有看到函数调用?return已经结束函数
回复讨论(解决方案)
没有写入呀!
xml 中并没有
节点
但是确实把原文件修改啦。
噢,你给出了错误的信息,我还以为主贴中最后的 xml 是结果呢?
那么就测试一下吧
function get($str){echo $str; // user $matches = $this->xml->xpath("/conf/item[@name=\"$str\"]"); if (count($matches)){ $this->lastmatch = $matches[0];print_r($matches[0]);/*userSimpleXMLElement Object( [@attributes] => Array ( [name] => user ))*/ return (string) $matches[0]; } }
if (!is_null( $this->get($key))){
$this->get($key) 返回了字符串 user
所以 is_null 返回假
再取反就是真
既然条件表达式为真,那自然就进入分支,进行赋值操作啦
从第17行和19行
$matches = $this->xml->xpath("/conf/item[@name=\"$str\"]");
$this->lastmatch = $matches[0];
$this->lastmatch[0] 是 $this->xml->xpath的引用( xpath方法返回SimpleXMLElement object的集合)
PHP中
变量=对象
变量为对象的引用,而不是副本
我明白了,谢谢
内容总结
以上是互联网集市为您收集整理的这个为什么会写入xml,$this->lastmatch[0]没有看到函数调用?return已经结束函数全部内容,希望文章能够帮你解决这个为什么会写入xml,$this->lastmatch[0]没有看到函数调用?return已经结束函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。