Altyapıları Taşınabilir Kodu?

5 Cevap php

Biz, "Burada Ekle Çerçevesi" ile çalışmaya karar verdik

Biz onlar hakkında endişeli ne üst yönetimi yukarı-ancak çerçevenin sonraki sürümde en muhtemel güncelleştirmeyi geleceğim gibi, bir çerçeve rulonun üzerinde ve ölür, ve kod durmuş olur "Ne olur?" Bu olay şansı çok düşüktür, ama yine de bu konumunu savunmak zorunda.

Ben burada çerçeve tartışmalar çoğunlukla tüm görüş bildiği gibi ben bilerek, genel düzeyde tüm cevapları tutmak için çerçeve söz başarısız oldu.

Yani, şimdi soruya ben ile karşı karşıya am:

Kodumuz taşınabilir çerçeveler tutmak için ne şeyler yapabilirim?

5 Cevap

Mümkünse, bir "etkileşim tabaka" dan iş mantığını ayırmak için deneyin. Temel olarak, bu etkileşim tabaka altta yatan çerçeveye aramaları, böylece daha sonra çerçeveye konuşmak için kullanılan bu katmanı için uygulama görüşmelerini tamamladı.

Bunu yaparak, sadece farklı bir çerçeve karşı etkileşim katmanı yeniden bir şeyler kurtarma mümkün olabilir.

Alternatif olarak, orada yeni bir versiyon, ya da çerçeve artık çünkü muhafaza ediliyor sırf çerçeveler yükseltmek zorunda değilsiniz tavsiye edebilirsiniz. Sık sık, güncellemek için karar Meraklıları tarafından yapılan, ve bunu destekleyecek hiçbir gerçek iş durum vardır; hala hiç bakımı ile çalışan COBOL ve VB6 uygulamaları sayısına bakmak.

Mümkün olduğunca soyutlayarak çerçeve sorunlar sizi izole edebilir.

Size bir örnek vereyim. Ben son zamanlarda çok Codeigniter ile çalışmaya başladım. Ben çerçeve yapar bazı şeyler takdir, ama bunun diğer yönlerini bir hayranı değilim. Ben sevmiyorum belli bir şey hemen hemen yazdığınız her uygulama için CI ayrı bir kopyasını kullanmak zorunda olmasıdır. CI yeni bir sürümü ile çıkıyor, ben geri gitmek ve çoklu uygulamaları yükseltmek zorundayız.

Bu nedenle, benim CI yükler in "baz" adı verilen ayrı bir dizin oluşturduk, ve ondan sınıfları yüklemek edebilmek için bir PHP autoloader kurmak. Ben vb "Base_controller", "Base_service", "Base_model", gibi şeyler var, ve benim CI yükler tamamında kullanabilirsiniz. Bu sınıflar, normal CI sınıfları uzatmak, ve sırayla benim uygulamalar bu temel sınıfları uzatmak. Örneğin, Uygulaması bir numara, CodeIgniter'ın Controller sınıfını genişleten bir Kontrol sınıf yazmak yerine, I sırayla CI uzandığı, benim Base_controller uzanan Controller .

Bu bana CI ve benim apps arasındaki ayrılığın bir düzeyini verir. CI değişecek olursa, ben sadece benim "baz" katmanı yükselterek onu yönetmek gerekir. Ben de bu katmanda baz işlevselliği bir şey var ve sadece çok yeni bir CI yüklemek her zaman uzanan daha, bir kez yazabilirsiniz.

Onunla denize gitmek istemiyorum gibi Soyutlama, dikkatli bir tasarım gerektirir. Ama bu kesinlikle bir çerçevenin kodundan kodunuzu ayırmak için yararlı bir araçtır.

  • Alternatifleri inceleyin.
  • Choose a couple based on:
    • Benzerlik (şablon kodu, mimari, javascript kütüphaneleri)
    • Çeşitlilik (aynı kişi tarafından muhafaza, elbette)
    • Simplicity (daha basit sizin çerçeveler, alırsınız taşıma daha az sorun vardır)
  • Sizin iki alternatifleri Eğitim ve göç yolları hazır (yani, biz bu ve yeniden yazmak ve burada veritabanı katmanı esneteceksiniz)

Yani PHP Dil ise ben gerçekten, gerçekten Zend Framework :-) ölecek şüpheliyim dedi

Açık kaynak kodlu bir çerçeve almak? Sonra orijinal sürdürme bırakır eğer hala kodunu koruyabilirsiniz.

Bazı savunmalar olabilir:

-Adaptör desen

Bu açık kaynak kodlu bir çerçevedir-Eğer kendiniz geliştirmek, ya da çatal. Artık geliştirilen değil çerçeve kodu dissapears anlamına gelmez.

Çerçevesi üzerinde bağlı olarak modelleri çerçevesinde kopuk haldedirler. Örneğin Zend Framework etkin bir kaydını kullanması belirtmiyor. Yani modelleri veritabanı katmanı ayrıştırılması gerekir. Modelleri modeli çerçevesinde (kontrolör, görünüm ve db tabakası) ayrıştırılması durumunda alternatif bir iskelet üzerine değiştirerek de zor değildir uygulamanın en zor parçası olduğu için.