Originariamente inviato da Al_katraz984
Codice PHP:
$tag_p = factory_oggetti::crea_oggetto('p', array());
Per i widgets ti posto la mia implementazione che
usa un sigleton ma + a monte (non saprei dirti se è
la migliore
)
Codice PHP:
class WidgetsFactory{
private static $instance= null;
private function __construct(){}
public static function getInstance(){
if(is_null(self::$instance)){
$class= __CLASS__;
self::$instance = new $class;
}
return self::$instance;
}
public function create($class,$attributes){
if(!class_exists($class)||!is_array($attributes)){
throw new WidgetsException('Invalid parameters in class [b]['.__CLASS__.'][/b]',0,new WidgetsException());
}
return new $class($attributes);
}
}
che poi utilizzo in questo modo:
Codice PHP:
class ContactFormHeaderView{
private $widgets= null;
private $view= null;
public function __construct(){
$this->widgets= WidgetsFactory::getInstance();
$this->setView();
}
private function setView(){
$this->view= $this->widgets->create('H2',array());
$this->view->setData('Scrivici!');
}
public function getView(){
return $this->view;
}
final public function __destruct(){
unset($this->widgets);
unset($this->view);
}
}
Si potrebbe anche pensare di passare un oggetto per
aggregazione o estendere le views da una classe madre e si raggiunge lo stesso scopo.