PHP でメソッド チェーン を実行するのは簡単です。しかし、私はこのようなものが必要です、
$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
はPHP では無効な構文であり、こちらで説明され$this = X
ている回避策がわかりません。のようなものを使用できますが、それは大きな過負荷であり、問題は正しいことを行う方法です。$this->loadXML( $xproc->transformToDoc($this)->saveXML() );
実装しようとする別の(間違った)方法、
function trasformToThis($xslfile) {
... same ...
return $xproc->transformToDoc($this); // lost trasformToThis() method
}
したがって、この場合の質問は「DOMxx にキャストする方法は?」です。