PHP:什么是SimpleXMLElement()类和SimpleXML_load_string()之间的区别?

Vic*_*rez 19 php xml simplexml

我见过很多编码器SimpleXML_load_string()而不是SimpleXMLElement()班级.使用前者对后者有什么好处?我已经阅读了关于simplexmlPHP手册.我无法理解它是什么.

任何帮助和指导(可能通过例子)将非常感谢.提前致谢.

Kin*_*nch 19

simplexml_load_string()(顾名思义)从字符串加载xml并返回一个对象SimepleXMLElement.这与使用类的通常构造函数没有区别.

更新:

SimpleXML::__construct()有一个额外的参数(第三个)bool $data_is_url = false.如果这是true行为与simplexml_load_file()(与公共流包装器一起)相同.因此,两个simplexml_load_*()功能都涵盖相同的功能SimpleXML::__construct().

附加函数simplexml_load_*()有第二个参数string $class_name = "SimpleXMLElement"来指定要返回的对象的类.这不是功能的特定功能,因为你可以"使用"与通常的实例非常相似的东西

class MyXML extends SimpleXMLElement {}
$a = new MyXML($xml);
$b = simplexml_load_string($xml, 'MyXML');
Run Code Online (Sandbox Code Playgroud)

OOP和过程方法之间的区别在于函数返回false错误,但构造函数抛出异常.


mar*_*rio 5

它主要是一个方便的包装。通过自己构建基本元素,您至少需要两行代码才能完成任何事情。使用simplexml_load_string()单个表达式可能就足够了:

 print simplexml_load_string($xml)->title;
Run Code Online (Sandbox Code Playgroud)

短于:

 $e = new SimpleXMLElement($xml);
 print $e->title;
Run Code Online (Sandbox Code Playgroud)

当然,函数签名也有细微的变化。

更新:和完全相同的长度

print(new SimpleXMLElement($xml))->title;
Run Code Online (Sandbox Code Playgroud)