Şu anda Zend Framework öğrenmeye çalışıyorum ve bu nedenle ben kitabı "Eylem Zend Framework" aldım.
3. bölüm, bir temel modeli ve denetleyicisi ikisi için ünite testleri ile birlikte tanıtıldı. Temel denetleyicisi bu gibi görünüyor:
class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
$this->view->title = 'Welcome';
$placesFinder = new Places();
$this->view->places = $placesFinder->fetchLatest();
}
}
Places
veritabanından son yerlere getirir modeli sınıftır. Burada ne hata bana: nasıl IndexController
sınamak gerekir isolation? Places
sınıfına referans "kodlanmış" olduğu gibi, ben herhangi taslakları enjekte veya IndexController
içinde alay edemez.
Ne ben oldukça istiyorum böyle bir şey olur:
class IndexController extends Zend_Controller_Action
{
private $placesFinder;
// Here I can inject anything: mock, stub, the real instance
public function setPlacesFinder($places)
{
$this->placesFinder = $places;
}
public function indexAction()
{
$this->view->title = 'Welcome';
$this->view->places = $this->placesFinder->fetchLatest();
}
}
Ben haberi ilk kod örneği en kesinlikle IndexController
izolasyon test edilemez gibi dost birim test değil. İkincisi çok daha iyidir. Şimdi sadece denetleyici nesneleri içine modeli örneklerini enjekte için bir yol gerekir.
Ben Zend Framework başına bağımlılık enjeksiyon için hiçbir bileşene sahip olduğunu biliyoruz. Ancak bazı iyi çerçeveler PHP için, herhangi bir birlikte Zend Framework ile kullanılabilir dışarı orada? Veya Zend Framework bunun için başka bir yolu var mı?