Recentemente ho letto la guida pdf di Miško Hevery su scrivendo codice verificabile in cui ha dichiarato che dovresti limitare le tue istanze di classi nei tuoi costruttori. Capisco che è quello che dovresti fare perché ti permette di prendere facilmente in giro oggetti che vengono inviati come parametri alla tua classe. Ma quando si tratta di scrivere codice reale, spesso finisco con cose del genere (l'esempio è in PHP usando Zend Framework ma penso che sia auto esplicativo):
class Some_class
{
private $_data;
private $_options;
private $_locale;
public function __construct($data, $options = null)
{
$this->_data = $data;
if ($options != null) {
$this->_options = $options;
}
$this->_init();
}
private function _init()
{
if(isset($this->_options['locale'])) {
$locale = $this->_options['locale'];
if ($locale instanceof Zend_Locale) {
$this->_locale = $locale;
} elseif (Zend_Locale::isLocale($locale)) {
$this->_locale = new Zend_Locale($locale);
} else {
$this->_locale = new Zend_Locale();
}
}
}
}
Secondo la mia comprensione della guida di Miško Hevery, non dovrei installare Zend_Local nella mia classe, ma spingerlo attraverso il costruttore (che può essere fatto attraverso l'array di opzioni nel mio esempio).
Mi sto chiedendo quale sarebbe la migliore pratica per ottenere la massima flessibilità per la disattivazione di questo codice e anche, se voglio allontanarmi da Zend Framework.
Grazie in anticipo