Forum und email

DOMDocument->registerNodeClass()

(PHP 5 >= 5.2.0)

DOMDocument->registerNodeClass() — 基底ノード型を作成する際に使用する拡張クラスを登録する

説明

DOMDocument
bool registerNodeClass ( string $baseclass , string $extendedclass )

このメソッドにより、独自に拡張した DOM クラスを登録することができます。 これを、後で PHP DOM 拡張モジュールで使用します。

このメソッドは、DOM の標準にはないものです。

パラメータ

baseclass

拡張したい DOM クラス。クラス名の一覧は、この章の導入部にあります。

もちろん、DOMDocument を拡張したクラスを登録することはできません。 しかし、拡張したクラスのインスタンスを作成することで、常にドキュメントを開始できます。

extendedclass

拡張したクラスの名前。NULL を渡した場合は、 それまでに baseclass を拡張して作成したすべてのクラスが削除されます。

返り値

成功した場合に TRUE を、失敗した場合に FALSE を返します。

変更履歴

バージョン 説明
PHP 5.2.2 5.2.2 より前のバージョンでは、同一の baseclass を継承した新しいクラスを登録する際には、以前に登録されていた extendedclass の登録を解除する必要がありました。

Example#1 新しいメソッドを DOMElement に追加し、コードを書きやすくする

<?php

class myElement extends DOMElement {
   function 
appendElement($name) { 
      return 
$this->appendChild(new myElement($name));
   }
}

class 
myDocument extends DOMDocument {
   function 
setRoot($name) { 
      return 
$this->appendChild(new myElement($name));
   }
}

$doc = new myDocument();
$doc->registerNodeClass('DOMElement''myElement');

// これ以降、他の要素への要素の追加が一回のメソッドコールでできるようになります!
$root $doc->setRoot('root');
$child $root->appendElement('child');
$child->setAttribute('foo''bar');

echo 
$doc->saveXML();

?>

上の例の出力は以下となります。

<?xml version="1.0"?>
<root><child foo="bar"/></root>