Ben bir PHP 4 sunucuda şaşırıp, ve ben Dependency Injection gibi modern Design Patterns için eski bir miras projesini hareket başlatmak istiyoruz. PHP 4 ile çalışacaktır herhangi bir bağımlılık enjeksiyon çerçeveler var mı?
i this (damla) bulundu, ancak bir kaç yıl içinde güncelleştirilmiş değil gibi görünüyor.
Çoğu bağımlılık enjeksiyon çerçeveler bağımlılıklarını belirlemek için yansıma kullanın. PHP4 typehints sahip olmadığından, gerçekten bunu yapamazsın. Deneyler yapılandırma dosyaları kullanılarak yapılmıştır - Bazı zamanlar (Genellikle açıklamalar denir) kod yorumlarda gömülü. Bu çalışır, ben biraz aksak bulabilirsiniz. Denemek ve ona statik yazdığınız çözümleri uygulamak için daha benim düşünceme göre,, sizin yararınıza PHP'nin dinamik doğasını kullanarak daha iyidir. Sen el yapımı fabrikaları ile uzun bir yol alabilirsiniz. Örneğin, bakınız this post on how.
Ben bir bağımlılık enjeksiyon çerçeve çünkü gerçekten nesne yönelimli programlar içinde yapılandırılmıştır şekilde PHP üzerinde çalışacağını sanmıyorum. Her şeyden önce, bu ikili zaten orada neyin C # veya Java gibi değil ve sadece bu nesne örneğini ve başka içine enjekte etmek için bir yol bulmak zorunda. PHP sınıf dosyaları yüklemek ve bunları kullanmak için önce onları yorumlamak zorundadır. Yani PHP ile derin miras hiyerarşileri varsa ben bunun iyi bir fikir olduğunu sanmıyorum.
Bir betik dili PHP - o kadar kaldıraç bunu en iyisi bir betik dili olduğunu göz önüne alındığında. Yani, ben sadece enjeksiyon bağımlılık benzer bir şey yapmak için basit bir fabrika veya oluşturucu yöntemler faydalanmak istiyorum. Ben sadece opcode önbelleğe yapmadıkça PHP zamanı (her web isteği için işlemek zorunda şeyler katacak bir DI çerçeve ile yük o olmaz, ama yine de havai bu web Java platformları tarafından tahakkuk değil orada olacak. NET). Ben nesneleri içine enjekte edilecek ya da oluşturulan nasıl nesneleri değiştirmek varsa, sadece fabrika / oluşturucu yöntemlerini içeren komut dosyasını düzenlemek için basit bir görev olacaktır. Zaten orada yeniden derlemek gerek yok. Yani esneklik var ve ben şeyler yapmanın PHP yolu için uygundur hafif bir mimariye sahip.