Chiamate di metodo multiple nel costruttore e nell'integrazione delle dipendenze

0

Mi è stato chiesto di ridefinire un po 'di codice spaghetti quasi urlabile nell'architettura orientata agli oggetti.

Ho dei dubbi riguardo a una classe che ho progettato. Ecco lo scheletro della classe:

require_once 'inc/FeaturedCarousel/Carousel.php';
class FeaturedCarousel
{
    private $currentCategory;
    private $allFeaturedAdvertisers = array();
    private $metaData = array();
    private $featuredAdvertisersIds = array();
    private $dataForDisplay = array();

    public function __construct($currentCategory)
    {
        $this->currentCategory = $currentCategory;
        $this->getAllFeaturedAdvertisers();
        $this->getAllAdvertisersMetaData();
        $this->getFeaturedAdvertisersInCurrentCategory();
        $this->getDataForDisplay();
    }    

    private function getAllFeaturedAdvertisers()
    {
    }

    private function getAllAdvertisersMetaData()
    {
    }

    private function getFeaturedAdvertisersInCurrentCategory()
    {             
    }

    private function getDataForDisplay()
    {     
    }

    public function displayCarousel()
    {
        new FeaturedCarousel\Carousel($this->dataForDisplay);
    }      
}

La classe è iniziata in questo modo:

$carousel = new FeaturedCarousel($currentCategory);
$carousel->displayCarousel();

Il ruolo della classe consiste nel preparare i dati per la visualizzazione e quindi visualizzarli utilizzando una classe esterna Carousel che viene creata un'istanza nel metodo displayCarousel() .

Potrebbero esserci aspetti importanti che dovrebbero essere rifatti. Tieni presente che ho già implementato tutti i metodi, quindi non è necessario concentrarsi sulla loro implementazione.

Ecco le mie domande -

  1. Tutti i metodi necessari per generare i dati per la visualizzazione vengono innescati uno alla volta nel costruttore. Ognuno di questi metodi genera una proprietà privata richiesta dal metodo chiamato next. Pertanto, se uno qualsiasi dei metodi fallisce, non ha davvero senso chiamare i metodi successivi. Come dovrei affrontare questi possibili errori di metodo?

  2. Il metodo displayCarousel() crea un'istanza di un'altra classe responsabile del rendering effettivo del contenuto HTML. Al momento la classe Carousel è solo required e istanziata nella chiamata al metodo. La classe Carousel deve essere "iniettata" nella mia classe prima che venga utilizzata?

posta luqo33 24.03.2015 - 21:46
fonte

1 risposta

1

if any of the methods fails, there is really no point in calling subsequent methods. How should I address those possible method failures?

Genera un'eccezione.

Should the Carousel class be 'injected' into my class before it is used?

Sì, se esiste più di un'implementazione di Carousel (compresa la possibilità di un oggetto fittizio ai fini del test unitario). Quindi inietterai un ICarousel .

    
risposta data 24.03.2015 - 21:51
fonte