Zend Framework ve Yağ Kontrolörleri önleme

0 Cevap php

Avoiding Fat Controller

Yani Zend Framework kullanarak yaşıyorum ve benim eylemleri biriyle yağ denetleyicileri önlenmesi ile ilgili bir sorum var. Temelde benim veritabanına CSV dosyası normalize ediyorum.

This means that I have to get the feed and then use my model. The feed grabbing is just there to show how it works, but that is now an Action Helper.

Ben Zend Framework ile Veri Mapper desen kullanıyorum. I hate Ben Controller bu yapıyorum. Bu setProperty Hepsi () -> setProperty () -> setProperty () inanılmaz fugly bakmak ve ben yanlış yerde yapıyorum gibi hissediyorum? Sadece bazı tür service layer nerede tüm $feed geçmek ve o sınıfta benim Modelleri örneğini ve benim Mapper ve oluşturmak için daha iyi bir seçenek olabilir mi?

Ayrıca, ben bir işlem kullanıyor olmalıdır, yani normalleştirmek gerek, ama benim işlem başlamalıdır nerede ben emin değilim. Çünkü şu anda şeyler yapıyorum şekilde, şimdiye kadar düşünebiliriz tek yer benim Controller olduğunu. wow.. that would be an awful place.

How can I get the model behaviour and operations out of my controller?

ImportController.php

public function indexAction() {
        $start = $this->getRequest()->getParam('start');
        $end = $this->getRequest()->getParam('end');
        $url = "http://www.domain.com/admin/GetBookingData.aspx";       

        $client = new Zend_Http_Client();
        $client->setParameterGet('dateEnteredMin', $start);
        $client->setParameterGet('dateEnteredMax', $end);
        $client->setParameterGet('login', 'login');
        $client->setParameterGet('password', 'password');
        $client->setUri( $url );
        $client->setConfig(array(
            'maxredirects' => 0,
            'timeout'      => 30));
        // Send the request. 
        $response = $client->request();

        // Grab the feed from ->getBody and add it to $feed
        $feed = $this->csv_to_array(trim($response->getBody()));


        // The first item in the array is the heading in the CSV, so we can remove it from the array using shift().
        $title = array_shift($feed);

        // Create my Models and Mappers.
            // ***  EVERYTHING BELOW HERE IS WHAT I DON'T LIKE ***
        $bookings =         new Bookings_Models_Bookings();
        $property =         new Bookings_Models_Property();
        $clients =      new Bookings_Models_Clients();

        $bookingsMapper =   new Bookings_Models_Bookings_Mapper();
        $propertyMapper =   new Bookings_Models_Property_Mapper();
        $clientsMapper =    new Bookings_Models_Clients_Mapper();

        $bookings->setId($feed[9])
            ->setPropertyId($feed[1])
            ->setClientId($feed[2])
            ->setDate($feed[4]);
        $bookingsMapper->save($bookings);

        $property->setId($feed[1])
            ->setPropertyName($feed[23])
        $propertyMapper->save($bookings);

        $clients->setId($feed[2])
            ->setFirstName($feed[20])
            ->setLastName($feed[21])
        $clientsMapper->save($clients);

}

0 Cevap