<?php
Class Etiket{
var $etiketler;
function Etiket($ac,$icerik = null,$kapat = null){
$this->ac = $ac;
$this->icerik = $icerik;
$this->kapat = $kapat;
}
function ekle($ac, $icerik, $kapat){
$yeni_etiket = new Etiket( $ac, $icerik, $kapat );
if( $this->kapat == null )
{
die("invalid ML object");
}
$this->etiketler[] = $yeni_etiket;
return $yeni_etiket;
}
function derle( $derinlik = 0, $paragraf = "\t", $satirbasi = "\n" ){
$metin=null;
$centik = str_pad( "", $derinlik, $paragraf );
$metin .= $centik . $this->ac . $satirbasi;
if( $this->kapat == null )
return $metin;
if( $this->icerik != null)
$metin .= $centik . $paragraf . $this->icerik . $satirbasi;
if (is_array($this->etiketler)){
$anahtarlar = array_keys($this->etiketler);
foreach($anahtarlar as $anahtar){
$metin .= $this->etiketler[$anahtar]->derle( $derinlik + 1, $paragraf );
}
}
$metin .= $centik . $this->kapat . $satirbasi;
return $metin;
}
}
$ml=new Etiket("<html>","","</html>");
$ml->ekle("<h1>","Merhaba","</h1>");
$ml->ekle("<div>","Ulusan Yazılım","</div>");
echo $ml->derle();
?>
Çıktısı
<html>
<h1>
Merhaba
</h1>
<div>
Ulusan Yazılım
</div>
</html>