Birisi bana bazı DI koşullarını anlatabilir miyim?

2 Cevap php

PHP 5 için DI çerçevenin yazılması sürecinde yaşıyorum ve enjeksiyon bağımlılık ile ilgili bazı kelimelerin 'resmi' tanımlarını bulmak için çalışıyorum. Bazıları bu kelimenin 'context' ve 'lifecycle' vardır. Ve aynı zamanda, ben alır nesneyi ne denir ki created/injected? Son olarak, hangi bileşenler ve hizmetler arasındaki fark nedir ve hangi terim (ya eğer) ben enjekte edilebilir nesneleri aramak gerekir?

Ben Martin Fowler makaleyi okuyun ve diğer DI çerçeveler (Phemto, Bahar, vb Google Guice, Xyster) baktım, ama ben ne düşündüğünüzü bilmek istiyorum ettik. Teşekkürler!

2 Cevap

Bilgisayar programlama bağımlılık Enjeksiyon (DI) bir yazılım komponenti, bir dış bağımlılığı temin sürecini ifade eder. Bu ters olan endişe ihtiyaç duyulan bağımlılığın alma işlemidir kontrol inversiyon özel bir şeklidir.

  • yaşam döngüsü: tekiz, istek başına, geçici .... ne kadar uzun bir kap içinde yaşamalı
  • Bileşenler: Daha basit bir tanımlama olabilir: bir bileşen, tanımlama için yazılmış bir amacıdır. Bu şartname ne fark etmez vb: COM, Enterprise JavaBeans, sürece nesnenin özelliğine uygun olarak.
  • hizmetler: vadeli hizmet bitişik ve özerk iş veya teknik bir işlevsellik discretely tanımlanmış bir dizi ifade eder.
  • Bağlam: tüketicilere sağlanan uygulamaların kapsayıcı düzeyinde ayırma. Örnek yeşil sayfalarında altın ortakları kırmızı çorap için% 15 indirim olacağı olduğunu.

eğlenmek :)

Ben bir 'resmi' bir tanımlama var olduğunu bilmiyorum. Fowler makalede I DI okumak ilk parçası oldu. Bu sizin için yeterli yetkili değilse, ben bu konuda geliştirmek nasıl SO görmüyorum.

Sana ne 'baktım' ne demek? Ne kadar belgelerine okudum? Eğer herhangi bir uygulamaları yazma denediniz mi? Eğer zaten Bahar ve Guice ile kod yazdım eğer kendiniz için bu soruşturma çok iyi bir iş yaptık. Sadece Google yapmanız daha var geri getirdi birkaç yazı okudum.

Spring 'Bağlam' sizin için nesneleri oluşturmak için kullanılır fabrika demektir. Ben genellikle uygulama başına birini veya web uygulaması var. Benim uygulama genellikle nesneleri oluşturuldukları 'bağlam' dir.

'Yaşam döngüsü' DI için farklı değildir - bu, başlatıldı kullanılan ve tahrip, bir nesne oluşturulduğunda ile ilgisi yoktur.

Bileşenleri tek bir yazılım dışlayıcı veri ve işlemleri vardır. Hizmetler genellikle bir ağda dağıtılmış iş-önemli operasyonları gerçekleştirmek bileşenlerin özel türü vardır. Hizmetler genellikle bileşenler, ancak tüm bileşenleri hizmetlerdir. Onlar eş anlamlı değildir.

Bir DI çerçeve olmadan bileşenleri veya hizmetleri yazabilirsiniz. Enjekte nesnelerin 'bileşenleri' aramak için size yardımcı olursa, benim misafirim ol.

Ben merak ediyorum: neden bunlar için isim üzerinde vurgu? İsimlendirme elbette önemlidir, ancak DI ile birincil sorun değil.