2009-11-24 17 views
7

set_include_path() işlevini öğrendim. Bütün bu zaman boyunca, config.php, kendi BASE_PATH ve set_include_path öğemi tanımlar mı?

define('BASE_PATH', '/var/www/mywebsite/public_html/'); 

sabit bir tanımlanmış Ve sonraki tüm php dosyalarında, herhangi bir avantaj sabit yaklaşımla vs ile var mıdır yüzden

include(BASE_PATH.'header.php'); 
include(BASE_PATH.'class/cls.data_access_object.php'); 

gibi yer alacağını set_include_path yaklaşımı ve tersi? Sabit yaklaşım geçerliliğini yitiriyor mu? set_include_path kullanma

cevap

5

() (veya ini_set ('include_path', ...)) Eğer kütüphane kodunu içerecektir birden çok klasör belirlemenizi sağlar. Örneğin, uygulamanız çeşitli farklı çerçevelere/kitaplıklara dayanıyorsa, ör. ARMUT ve Zend FW, siz ('/ usr/local/php/armut/usr/local/php/zendfw', 'include_path') gibi

ini_set şey olabilir;

Bu yaklaşımın dezavantajı, öncelikle bulduğu her dosyayı kullanmasıdır; dahil etme yollarınızın birinden daha fazlasında "Mailer.php" adlı bir dosyanız varsa, bulduğu ilk olanı içerecek ve bu sizin niyetiniz değilse ince hatalara neden olacaktır. İyi kod organizasyonu genellikle bu sorunu çözer. Ayrıca, include_path, kurulumunuza bağlı olarak daha iyi performans elde etmek için bazen düzeltilmesi gereken realpath önbelleğini (http://us2.php.net/realpath) geçer.

Her iki yöntem de iyidir, ancak define() yönteminin kullanılması daha açıktır.

FWIW Genellikle ini_set ('include_path', ...) kullanın.

4

Bence Micahel'in açıklaması çok açık.

Sana örneğin bir klasördeki tüm PHP dosyalarını depolamak zaman "set_include_path" kullanılması önerilir: "libs /" (onun daha kolay). define() yöntemini kullanarak, dosya yolunu açıkça belirttiğinizden daha hızlı olmalıdır.

Gerçekten gerekli olmadıkça mutlak yolları kullanmaktan kaçınmaya çalışın. senin yolları bu şekilde belirtmek için çok faydalı buldum: Yolun kodu taşımak her zaman güncellemek zorunda önleyecektir

define("BASE_PATH", dirname(__FILE__)); 

Bu şekilde.

+0

harika! Az önce birkaç gün önce dirname() 'yi duydum. – John

İlgili konular