• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

这个为什么会写入xml,$this->lastmatch[0]没有看到函数调用?return已经结束函数

php 搞代码 4年前 (2022-01-23) 24次浏览 已收录 0个评论
文章目录[隐藏]
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();

<?xml version="1.0" encoding="utf-8"?>          bob		  newpass	  localhost

这个为什么会写入xml,$this->lastmatch[0]没有看到函数调用?return已经结束函数

回复讨论(解决方案)

没有写入呀!
xml 中并没有
test
节点

但是确实把原文件修改啦。

噢,你给出了错误的信息,我还以为主贴中最后的 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方法返回SimpleXMLEle1本文来#源gaodai$ma#com搞$代*码*网

搞代gaodaima码

ment object的集合)

PHP中
变量=对象
变量为对象的引用,而不是副本

我明白了,谢谢


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:这个为什么会写入xml,$this->lastmatch[0]没有看到函数调用?return已经结束函数

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址