Aklımda testability ile bir PHP uygulama yazıyorum, bu yüzden benim sınıflar hep Bağımlılık Enjeksiyon desen bakımından bağlı oldukları "işbirlikçi nesneler", onların kurucular sormak.
Bu şekilde, benim birim testleri mocks veya test uygulamaları geçmek mümkün.
Ne elde etmek istiyorum rağmen, her işbirlikçisi için varsayılan bir uygulama sınıfını başlatır bir geri dönüş mekanizmasını tetiklemek amacıyla, yapıcı argümanlar geçirilen null değerleri ile bir sınıf örneğini muktedir olmaktır.
Nesne tipi parametreleri PHP varsayılan bir değer verilemez, çünkü kurucusu içine yapmak zorunda. Aşağıdaki kod Şu anda kullanıyorum yaklaşımın bir örneğidir:
class Engine
{
private $loader;
private $logger;
public function __construct(ResourceLoader $loader = null, Logger $logger = null)
{
if ($loader == null) $loader = new DefaultResourceLoader;
if ($logger == null) $logger = new DefaultLogger;
$this->loader = $loader;
$this->logger = $logger;
}
}
Buna ne diyorsun? Ben bunun yerine bir IoC kapsayıcı kullanmak veya nesne-tipi argümanlar varsayılan bir değeri veren başka bir yolu var mıdır?