Bir PHP projesinde harici kütüphaneler için en iyi yer neresi?

4 Cevap

PHP proje (örneğin, GoogleMapAPI, Güvenlik Sorgulama, vb) dış kitaplıkları bulmak için en iyi yöntem nedir? Şu anda bunların hepsi / lib sınıfları veya alt dizin var ve adlandırma için Zend kuralı kullanıyorum (örneğin, sınıf Foo / lib / foo.php oturur, sınıf Db_Bar / lib / Db / Bar.php oturur).

Ama üçüncü parti şeyleri ayırmak gerekir? Eğer öyleyse, nasıl? Nerede? Lib / İç? Başka bir yerde? Not: her zaman (kendi sınıflarının aksine) gerektiğinde açıkça gerekli / dahildir, çünkü bu sınıfların autoloading bir sorun değildir.

TEŞEKKÜRLER!

4 Cevap

Sen /lib her şeyi koyarak, doğru yolda demektir. Birçok kütüphane, birden fazla dosya olacak beri ben, kendi alt klasör içine her biri ayıran öneririm. Bu yüzden çok üzerinde sahip /lib/googlemaps, /lib/recaptcha ve.

Eğer hala emin değilseniz, belki CodeIgniter gibi bazı çerçeveler bir göz atın. Joomla Yukarıda anlatılan sistem kullanır. Hatta bütün Joomla çerçeve için /lib/joomla var.

Bitti-düşünmeye gerek yok. Sürece bulmak ve kütüphanelerini kolay olduğu gibi, bu konuda endişelenmeyin.

Bu genellikle benim apps organize takip yapıdır:

myproject/
myproject/app
myproject/app/controllers
myproject/app/views
myproject/app/models
myproject/config
myproject/log
myproject/lib
myproject/lib/external
myproject/lib/external/Zend -> symlinked to -> /whatever/libraries/zend-1.x.x/
myproject/lib/external/GoogleMaps/ -> symlinked to -> /whatever/libraries/gmaps-1.x/
myproject/lib/core (to my application)
myproject/lib/core/Adapters/Rest.inc
myproject/lib/core/Facades/SimpleTwitterApi.inc
....etc....

Ben genellikle kitaplıkları (Zend, vb) farklı sürümlerini sembolik bir link ve bunları güncelleyerek daha fazla yönetilebilir hale gelir çünkü / lib harici olması yararlı olur. Eğer bir sürüm kontrol sistemi kullanmak eğer Ayrıca, harici lib / vs lib / özünde kaç commits görmek ilginç. Kodunuzu toplu harici kütüphanelerde ya da çekirdek ise Ayrıca, görmek için phploc gibi bir şey kullanabilirsiniz.

Btw, bu autoloading bir sorun değildir ve açıkça gerektiği gibi dosyaları gerektirmeden / dahil ediyoruz duymak güzel :)

Linux en iyi uygulamaları örneğin ile uyumlu olamazdı / Usr / modül tipine başına lib hiyerarşi ile pay?

Eğer sunucu üzerinde bunları saklamak istemiyorsanız her zaman veritabanındaki dosyaların adlarını ve konumlarını tutmak olabilir. Eğer depolanan bilgileri kullanarak bunları ihtiyaç olarak daha sonra bunları yükleyebilirsiniz. Ayrıca bu yapılması gereken bir değişiklik olduğunda birçok web sayfalarını değiştirmek zorunda engel olur.