まあ、私が多かれ少なかれ探しているのは、phpのイベントハンドラーです...-私は思います。
xmlファイル(正確にはansi n42.42ファイル)を作成するためのphpスクリプトを作成しています。私がやりたいのは、さまざまな「サブツリー」を定義し、それらをまとめて最終的なDOMDocumentにできるようにすることです。これらの各サブツリーを、サブツリーの構築に必要な属性を持つ拡張DOMNodeとして定義しています。domnodeはDOMDocumentに挿入されるまで不変であるため、設定のために介入した後に実行するビルドメソッドを定義しています。
例:私のクラス:(簡潔にするために一部のパーツを削除)
class calibration extends DOMElement{
var $calibtype="Energy";
var $coefficients;
var $id;
function calibration($coeff,$id=false){
parent::__construct('Calibration');
$this->coefficients=$coeff;
$this->id=$id;
}
function build(){ // must be called after the calibration is inserted into a dom-tree.
$this->setAttribute('Type',$this->calibtype);
$DOM=$this->ownerDocument;
$node=$DOM->createElement('Equation');
}
そしてそれを使用するには:
$cal = new calibration("-4, 3.12","cal_id");
$n42->firstChild->appendChild($cal); // n42 is the object extending DOMDocument
$cal->build();
$ calがツリーに追加されたときに、$ cal-> build()を自動的に実行させることはどういうわけか可能ですか?
(または、間違ったツリーを吠えているのでしょうか。最初からDOMFragmentを使用したほうがよいでしょうか?)