set_include_path vs Kendi BASE_PATH tanımlayabilirsiniz?

2 Cevap php

Ben fonksiyonu set_include_path () öğrendim. Bütün bu zaman, ben config.php dosyasında bir sabit tanımlanmış

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

Ve sonraki tüm php dosyaları, çok benzerleri dahil olacaktır

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

Set_include_path yaklaşım ve tersi vs sürekli yaklaşım ile herhangi bir avantajı var mı? Sürekli yaklaşım kullanılmıyor?

2 Cevap

Set_include_path () (veya ini_set ('include_path', ...)) kullanarak size kitaplık kodu içerecektir birden fazla klasör belirlemenizi sağlar. Örneğin, uygulama için farklı çerçeveler / kütüphanelerin çeşitli dayanır eğer, örneğin, Armut ve Zend FW, sen gibi bir şey olabilir

ini_set ('include_path', '/ usr / local / php / armut :/ usr / local / php / zendfw');

Bu yaklaşımın dezavantajı ilk bulduğu türden dosya kullanmak olacaktır; Eğer yolları içerme fazla birinde "Mailer.php" adında bir dosya varsa, o senin niyet değilse ince hataların neden bulur ilkini içerecektir. İyi kod organizasyonu genellikle bu sorunu giderir. Ayrıca, include_pathdaki bazen ayarlarınıza göre daha iyi performans almak için tweaked gerekir realpath önbellek (http://us2.php.net/realpath), geçer.

Her iki yolu vardır, ancak () yöntemi, daha açık olduğunu tanımlamak kullanarak, gayet iyi.

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

Ben micahel yaptığı açıklama çok açık olduğunu düşünüyorum.

I recommended you to use "set_include_path" when you store all your PHP files in an folder, for example: "libs/" (its easier). Using the define() method should be faster as you are specifying the file path explicitly.

Always try to avoid to use absolute paths unless they are really necessary. I found very useful to specify your paths this way:

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

Bu şekilde yol, kodu taşımak her zaman güncellemek zorunda önlemek olacaktır.