php çerçeveler - kendi önceden yapılmış vs inşa

7 Cevap php

PHP şu anda bir uygulama inşa ediyorum ve ben CodeIgniter gibi önceden varolan bir çerçeve kullanın veya kendi çerçeve oluşturmak konusunda karar çalışıyorum. Uygulama gerçekten ölçeklenebilir olması gerekir ve bana benim kendi oluşturmak gerekir ama ben yok eğer aynı anda ben tekerleği yeniden icat etmek istemiyorum düşündürüyor bunun kontrolü tamamen olmak istiyorum.

Herhangi bir tavsiye büyük takdir.

Teşekkürler

7 Cevap

Varolan çerçeve kullanın.

Tüm sıfırdan bir çerçeve oluşturma ilk zaman ve çaba büyük bir yatırımı temsil etmektedir. Basit ve güçlü hem de olması gereken bir şey tasarlarken çünkü süreci, deneme ve hata bir sürü içerir. Her tasarım kararı için bunu çerçevesi üzerine inşa edilecek her projeyi gelecekte nasıl etkileyeceğini kendinize sormanız gerekir.

Eğer her tasarım kararı almak ve başka bir yazılım projesi için yapacağı gibi gereksinimlerine karşı tartmak diye düşünmek istiyorum, ama şey size gereksinimlerini bilmiyorum. Bir çerçeve kendi etki alanı içinde hemen hemen her şey (ya da neredeyse her şeyi yapmak için uzatılabilir yeteneğine sahip) yapmak mümkün olması gerekiyordu, çünkü bunları bilemeyiz. Gelecek proje x yapabilmek gerekir. Lütfen çerçeve izin verebilir spagetti kod çevirerek olmadan? Ve ne proje b y yapmak ihtiyacı varsa? Ne proje c z yapmak ihtiyacı varsa?

Have you predicted everything?

Şimdi bu normal bir tepki şey işe yaramazsa, sadece gelecekte değiştirmek olacak olmasıdır. Bu sonuçta bir yazılım bulunuyor. Bir çerçeve ancak basit bir uygulama gibi değildir. Bu bir arayüze sahip ve bunu kullanarak olacak yazılım olduğunu maruz kere, bunu değiştiremezsiniz gerekiyordu. Bunu uzatmak, ama bunu değiştiremezsiniz. Yani şimdi alçakgönüllü yöntemler, API sürümleri ve sürüm uyumluluğu hakkında düşünmek zorunda. Normal çerçeve bakım ve yeni uygulama yazı ile birlikte başa sorunlar yepyeni bir set bulunuyor.

Sonra belgeler var. Sen bir API, öğreticiler, örnek kodu gerekir. Kendi çerçeve inşa sonra siz de bu ile uğraşmak zorunda. Bunu görmezden olabilir, ama sonunda kendinizi 6 ay önce yazdı bu yöntem ne yaptığını bulmak gerekir ki sizi temin ederim. Ne çıkmıyor? Ne özel durum x olur? Tüm bu aşağı yazdım, ya da tekrar kod boyunca adım gerekiyor? Ve ben bile kimin belgelere çoğunlukla kafanın içinde tamamen ya da en azından yatıyor özel bir çerçeve üzerinde başlamak için yeni bir ekip üyesi için olacak ne kadar kolay söz etmeyeceğim.

Ayrıca çok iyi ve parlak (ve maç için bir bütçe var) ile çalışıyoruz sürece mevcut çerçeveler övünme kütüphanelerinin geniş bir dizi var asla olduğunu kabul etmek gerekir. Eğer analiz, tasarım, kod, test ve bir açık kaynak topluluğu daha hızlı hata ayıklama?

Eğer bir çerçeve yazı için yeterince yetkin Son olarak kendinize sormalısınız. Eğer kene kılan bulmak için derin modern bir OO PHP5 çerçevenin koduna daldı? Ve en önemlisi why bu şeyleri belirli bir yol yapar biliyor musunuz? Eğer tasarım yaptığınız herhangi bir hata hemen yüzünüze ay içinde havaya ve tekrar tekrar onlar için ödeme sonunda olabilir unutmayın.

Şeyler Özetle ben varolan bir çerçeve ile gitmek için tavsiye ediyorum; Eğer birini seçmek zorunda ve bunun gibi ancak anlamına gelmez. Aksi takdirde yeni bir çerçeve geliştirmek için adamak ve varolan bir öğrenme için adamak istiyorum zaman ayırın. Sonra sizin ihtiyaçlarınıza uyacak şekilde uzatabilirsiniz. Ayrıca alışkanlık yapmak mümkün olacak şeyler olabileceğini unutmayın. Ama ya kendi çerçevesi ile yapmak mümkün olmaz şeyler olurdu temin ederim, bu yüzden tüm bu çok önemli değil. Bir çerçeve birkaç sınırlamalar getirmektedir. Size daha hızlı uygulamalar geliştirmek için güçlü olmak için ödediğiniz fiyat.

Ben kendi inşa ediyorum ve ben benim için önemli olan öğrenme açısından yaptığımız çok sevindim. Ayrıca benim kod toplam kontrolü olmak seviyorum. Bu büyük bir bunu kullanmayı bilen bir tek ben olmak, olsa negatifleri çok gelir. Ayrıca, geliştirme zamanı bir çok yerine benim müşterilerine ürünleri sunmak daha benim çerçevenin iyileştirilmesi harcanmaktadır. Ama ben gerçekten bina ve bunu kullanarak zevk herhelde.

Eğer öğrenmek istiyorsanız (A LOT) kendi inşa. Sadece işinizi halletmek istiyorsanız varolan birini kullanın. (Benim kendi başlamadan önce neredeyse CodeIgniter ile gitti)

Framework için gereksinimleri (ORM, PHP 5.3, PDO, vb) bir listesini yapın. Ardından mevcut çerçeveler üzerinde yineleme ve gereksinimleri ile eşleşen olanları bulmak için onları daraltmak. Ardından kod temeli, dokümantasyon, toplum, proje faaliyeti bakmak - sizinle çalışmak istiyorum şey hissettiriyor? Ayrıca kendiniz tüm gereklerini yerine getirmek için gereken zaman hakkında gerçekçi olun - bir uygulamayı veya bir çerçeve oluşturmaya odaklanmak istiyorsunuz?

Ben geçmişte kendi CMS çerçeve ve kullanılan özel (in-house) Genel php çerçeveler inşa ettik, ben senin kalkınma tarzı uygun bir aktif çerçeve bulmak ve bunu kullanmak istiyorum.

Olmadıkça ana ürün / uygulama is çerçeve. Ama bu şekilde görünmüyor.

Sizin ihtiyaçlarınızı uygun seçeneklerin kısa bir listesini vererek - kontrol ve ölçeklenebilirlik hakkında endişeler orada çerçevelerin ana uygulanmalıdır.

Certainly, it's not a question of 'in-house' vrs 'public', then once you've made that call just pick any old framework.

Size tam kontrol veren bir çerçeve için, sorunun arkasında soruyu yanıtlamak için ve (Ben ölçekli bir çerçeveye ihtiyacımız var nasıl emin değilim) makul iyi ölçek gerekir, I would suggest the Zend Framework. Bunu tek parçaları kullanabilirsiniz, ne istediğinizi yeniden ve sadece bir MVC uygulaması çok daha fazla bulunuyor.

Update: Zend ile özelleştirme hızlı bir örnek. Onların MVC yığını kullanmak istiyorum, ama rota istekleri için bir şey gerekmez, sadece zerdüştlerin yönlendirici kütüphane kullanabilirsiniz. Eğer MVC yığını gibi, ama yönlendirici çalışır şekilde nefret, sadece arabirimini uygulayan ve kendi yönlendirici yazabilirsiniz.

Bu aynı zamanda MVC istifinin dışına uygulanır. Zend posta için kütüphanelerin bir ton var, rss, önbelleğe alma, auth, db, vb ne istediğinizi kullanın ve gerisini görmezden besler. Ne istediğinizi uzatmak, çerçevenin en standart işlevselliği ihtiyaçlarınıza uygun değilse üzerine inşa edebilirsiniz arayüzleri / soyut / genelleştirilmiş sınıflar ile dizilmişlerdir.

Kısa cevap symfony IHMO olduğunu.

Nedenleri şunlardır:

  • weel kalkmasından yok
  • a good wheel is better than yours (others are professional wheel makers, since a lot of time)
  • Bir OSS çerçevesi genişletilmiş ya da değiştirilmiş, hatta sadece kontrol edilebilir
  • ilk ya da daha sonra kendi tekerleği korumak için zaman yok olacak
  • gözleri ve elleri bir dizi 2'den daha iyi yapmak!

Tabii ki önceki noktaları profesyonelce yapılmış çerçeveler çok küçük bir set için geçerlidir! Benim en sevdiğim symfony olduğunu.

Ben başlangıçta burada çalışan bir adam tarafından inşa kendi çerçevesi, yazdığı bir şirkette çalışıyorum. Sadece bir projede kullanıldı. Bunun nedeni, biz yakında zeki ve çok iyi olmasına rağmen, bunun için herhangi bir belge olduğunu fark olmasıdır. Biz başka bir geliştirici veya bir serbest adam istihdam Yani, bunu öğrenmek gerekiyor.

Biz popüler bir süre için CakePHP ile çalışır, ama bir karmaşa görünüyor. Biz sonunda KohanaPHP yerleşti. Uzatmak kolaydır, bazı iyi dokümantasyon (muhtemelen orada bazı diğerleri ile olsa), güzel biçimlendirilmiş kodu (size ne oluyor hızlı halledebiliriz belgeleri bulamazsanız anlamına gelir). Çerçeve yazılır yolu oldukça kolay bir geliştirici almak ve ne olup bittiğini takip etmek için yapar. Biz her zaman sorun CakePHP ile yapıyor vardı oysa.

Ben kendi çerçevesi haddeleme için tek argüman bazı çok özel şeyler isteyebilirsiniz olduğunu düşünüyorum. Ama Kohana uzatmak çok kolay, sadece oraya atabilir. Eğer gerçekten istemiyorsanız eğer onların paketlenmiş kütüphaneleri kullanmak zorunda değilsiniz.

İşte bazı proje Ben, hiç bir çerçeve ile GluePHP gibi yönlendirme çözümü sadece çeşit, zahmet etmeyin, dedi. O tam bir yığın çerçeve kullanmak için abartılı olur beri.

Sadece uygulamaya çalışıyor olsaydı, ben kendi yazma öneririm. Aksi olsa, kesinlikle varolan birini kullanarak ile gitmek. FTW Symfony'de.