<?php
/**
* Classe sDiv
*/
// **********************************************************
// Classe sDiv
// **********************************************************
/**
* Questa classe implementa un oggetto sDiv
*
* @author Dario Mazzeo <hide@address.com>
* @version 1.0.0
* @copyright Freesoftware Italia - www.freesoftwareitalia.it
* @package sClassHTML
*/
class sDiv extends sClassHTML{
private $html_body="";
/**
* Creazione dell'oggetto sDiv
*
* Esempio:
*
* <code>
* // creazione oggetto sDiv
* $contenitore = new sDiv();
*
* // visualizzazione del codice html
* echo $contenitore;
* </code>
*
* @param string $classe Specificare la classe CSS
*/
public function __construct($classe="css_div"){
$this->classe=$classe;
}
/**
* Aggiunta di un oggetto
*
* Esempio:
*
* <code>
* $contenitore = new sDiv("classecss");
* ...
* $contenitore->addObj($myform);
* echo $contenitore;
* </code>
*
* @param sClassHTML &$obj Oggetto passato per riferimento
* @param bool $delete Se la proprietà è impostata su true, l'oggetto viene cancellato
* @return null
*/
public function addObj(sClassHTML &$obj, $delete=true){
if ($obj->getZindex()>=$this->getZindex()){
$this->html_body.=$obj->getHtml();
if ($delete) $obj=null;
}
else
throw new Exception("ATTENZIONE non è possibile aggiungere questa classe!");
}
/**
* Questo metodo ritorna il livello di incapsulamento
*
* @return int
*/
public function getZindex(){
return 1;
}
/**
* Questo metodo cancella il contenuto dell'Html
*
* Se la classe derivata è di tipo statico (es. $_SESSION['obj']), questo metodo consente di
* cancellare il contenuto HTML che altrimenti non potrebbe essere cancellato.
*
* Esempio:
*
* <code>
* // page1.php
* if (!isset($_SESSION['cart'])){
* $_SESSION['cart']=new fCart('Carrello');
* ...
* }
* $_SESSION['cart']->Elabora();
* echo $_SESSION['cart'];
*
*
* // page2.php
* class fCart extends sDiv {
* ...
* public function __construct($classe){
* parent::__construct($classe);
* ...
* }
*
* public function Elabora(){
* $this->Clear(); // <- importante
* $lbl = new sLabel(...);
* $this->addObj($lbl); // senza il Clear() l'oggetto verrebbe aggiunto ad ogni invocazione
* ...
* }
* }
* </code>
*
* @return null
*/
public function Clear(){
unset($this->html_body);
parent::Clear();
}
/**
* Questo metodo elabora l'HTML dell'oggetto
*
* @return null
*/
protected function elaboraHtml(){
if ($this->classe!="") $myclasse=" class='".$this->classe."'";
$this->html="\r\n<div".$myclasse.">".$this->html_body."\r\n</div>";
}
/**
* Questo metodo restituisce l'equivalente html dell'oggetto creato
*
* Esempio:
*
* <code>
* echo $contenitore;
* </code>
*
* @return string Ritorna la stringa HTML
*/
public function __toString(){
$this->elaboraHtml();
return parent::__toString();
}
/**
* Questo metodo restituisce l'equivalente html dell'oggetto creato
*
* Esempio:
*
* <code>
* echo $contenitore->getHtml();
* </code>
*
* @return string Ritorna la stringa HTML
*/
public function getHtml(){
$this->elaboraHtml();
return parent::getHtml();
}
}
?>