<?php
class Elemento{
//Instance variables
private $tag; //string exemplo:link
private $atributos; // um elemente tem um array de atributos
private $temtagfinal; //booleano
private $subelementos; // um array de elemntos, porque por exemplo, dentro do html leva head e o body.
private $numtabs; // numero de tabs à esquerda
private $textTag;
//Construct
public function __construct($tag,$temtagfinal,$atributos) {
$this->tag=$tag; // para falarmos de uma variavel de instância usa-se $this
$this->temtagfinal=$temtagfinal;
$this->atributos=$atributos;
$this->subelementos=array();
$this->numtabs=0;
$this->textTag="";
}
//Methods
public function getCodigo(){
$codigo="";
for ($i=0;$i<$this->numtabs;$i++){ //este ciclo tem tantas iteracoes quanto o num de tabs definidos
$codigo.=" ";
}
$codigo.="<".$this->tag." ";
foreach($this->atributos as $atributo){
$codigo.=$atributo." ";
}
if (!$this->temtagfinal) $codigo.="/>"."\n";
else $codigo.=">"."\n";
if ($this->temtagfinal) {
if ($this->textTag==""){
foreach ($this->subelementos as $subelemento){
$codigo.=$subelemento->getCodigo();
}
}else{
$codigo.=$this->textTag."\n";
}
for ($i=0;$i<$this->numtabs;$i++){ //
$codigo.=" ";
}
$codigo.="</".$this->tag.">"."\n";
}
return $codigo;
}
public function addSubElemento($subelemento){
$subelemento->setNumTabs($this->numtabs+1);
$this->subelementos[count($this->subelementos)]=$subelemento; //count no array da-nos o n de posiçoes do array
}
public function setNumTabs($numtabs) {
$this->numtabs=$numtabs;
}
public function addTextToTag($textTag) {
$this->textTag=$textTag;
}
}
?>