做method chaining with PHP is easy。但我需要这样的事情,如何用DOMDocument进行方法链接?
$xml = $dom->transformToThis('file1.xsl')->transformToThis('file2.xsl')->saveXML();
或
$books = $dom->
transformToThis('file1.xsl')->
transformToThis('file2.xsl')->
getElementsByTagName('book');
很可能与PHP的DOMDocument或 DOMNode?
class DOMxx extends DOMDocument {
public function __construct() {
parent::__construct("1.0", "UTF-8");
}
function trasformToThis($xslfile) {
$xsldom = new DOMDocument('1.0', 'UTF-8');
$xsldom->load($xslfile);
$xproc = new XSLTProcessor();
$xproc->importStylesheet($xsldom);
$this = $xproc->transformToDoc($this); // ERROR!
return $this;
}
} // class
的$this = X
是在PHP中的无效的结构,我不明白workaround explained here。我可以使用诸如$this->loadXML($xproc->transformToDoc($this)->saveXML());
之类的东西,但这是一个很大的过载,而问题是关于如何做正确的事情。
另一个(错误)的方式来尝试实现,
function trasformToThis($xslfile) {
... same ...
return $xproc->transformToDoc($this); // lost trasformToThis() method
}
所以,在这种情况下,问题是“如何转换为DOMxx?”。
是的,它适用于方法链接,非常感谢!我会做更多的测试并等待其他答案,但我认为你是最好的答案。 –