2011-09-17 5 views
6

Şu anda bir PHP web uygulamasında yerelleştirmeyle uğraşmak için birkaç sınıf yazıyorum.Bu dairesel bağımlılıktan nasıl kurtuluruz?

sınıfları şunlardır:

  • Yerel Ayar - ayarlama ve kullanıcının yerel, saat dilimini dili alma ile Fırsatlar.
  • LocaleFormat - biçimlendirme tarih, alfabe, para birimi biçimleri ile Fırsatlar vb
  • Bölge - ülke ve saat dilimleri ile ilgili diğer işlevler için zaman dilimleri bir listesini derlemek ile arası.
  • LocaleData - Yerel ağ verilerini, örneğin adres biçimlerini ve posta kodu regeeksleri gibi şeyleri getirir.

Tüm uygulama düzgün çalışıyor, ancak Timezone'a birkaç şey eklemem gerekiyor.

Bu sorunla sonuçlanır: Yerel ayar, LocaleData'nın Locale yöntemlerini gerektiren yöntemleri gerektiren Timezone yöntemlerini gerektirir.

Bu dairesel bağımlılığı nasıl bozabilirim? Derslerimi daha küçük parçalara ayırmalı mıyım? Bununla başa çıkmak için herhangi bir desen var mı?

Alkış :)

cevap

2

yalnızca diğer sınıflardan yöntemleri çağırmadan, önce tüm sınıfları yük, o zaman sınıflar arasındaki yöntemleri çağırabilir. Sınıf dosyaları içinde, "dosyaları" içeren ayrı bir "loader" dosyasında yapılması gereken bir başlatma gerçekleştirmeyin, ardından başlatmayı başlatır.

Diğer sınıfları genişleten sınıflara dayalı döngüsel bağımlılıklar alıyorsanız, tüm kurulumu yeniden gözden geçirmeniz gerekir.

+0

Karşılaştığım sorun, birbiri ardına sınıflandırma yöntemi nedeniyle oldu. Bir DI çerçevesini kullanarak kurucu enjeksiyon kullandığım için bağımlılıklar DI çerçevesi tarafından başlatılır. Çözüm, Timezone'da bir biçimlendirici gibi davranan bir yöntem olduğu için LocaleFormat'a taşıdım. – F21