$ obj = SINIF :: getInstance (). Daha sonra ayarlayıcıları kullanarak bağımlılıkları enjekte ediyoruz ve $ obj-> initInstance () kullanarak başlatma işlemini başlatıyoruz;
Sanırım bunu olması gerekenden daha zorlaştırıyorsun. Sadece yapıcıya bağımlılıklar enjekte edebiliriz - ve eğer birçoğunuz varsa, sadece sözlük benzeri bir yapı kullanın, böylece ne kullanmak istediğinizi belirtin:
$obj = new CLASS(array(
'Frobnicator' => (),
'Foonicator' => (),
));
Ve kurucu içerisinde aşağıdaki gibi tutarlılık sağlayabilirsiniz:
if (!array_key_exists('Frobnicator', $args)) {
throw new Exception('Frobnicator required');
}
if (!array_key_exists('Foonicator', $args)) {
$args['Foonicator'] = new DefaultFoonicator();
}
$args
daha sonra gerektiğinde özel üyeler ayarlamak için kullanılabilir.
Tamamen böyle bir kurucu $obj
içerisinde yapıldığında, söz konusu sistemde olduğu gibi, var olan ancak başlatılmayan bir ara durum asla olmayacaktır . Bu tür ara durumlardan kaçınmak daha iyidir, çünkü nesnenin daima doğru kullanılacağını garanti edemezsiniz.