सर्वर साइड मैं एक नाशपाती निर्देशिका के लिए एक संदर्भ है पर मेरी include_path में, '/ usr/share/नाशपाती /' में। मेरे अनुप्रयोगों में मैं require_once 'library/file.php'
के साथ '/ usr/share/नाशपाती/पुस्तकालय /' में रहने वाली एक सामान्य लाइब्रेरी से फ़ाइलें शामिल करता हूं।एसपीएल Autoloading सर्वोत्तम प्रथाओं
मैं हाल ही में spl autoloader उपयोग शुरू कर दिया है, मैं लोडर समारोह आप तर्क है जिसके साथ फ़ाइल शामिल करने के लिए निर्धारित करने के लिए है में देखा। ऐसा करने का मेरा पहला तरीका फ़ाइल को शामिल करने और @
के साथ इसे दबाने की कोशिश कर रहा था यह देखने के लिए कि क्या यह असफल होगा, उदा। @include 'library/file.php'
हालांकि मुझे लगता है कि ज्यादातर @
खराब अभ्यास होने के कारण मैंने get_include_path
को PATH_SEPARATOR
द्वारा विस्फोट करके मैन्युअल रूप से स्वयं काम करने का निर्णय लिया और यह देखकर कि निर्देशिका क्या है, मैं इसे file_exists
और इसमें शामिल कर रहा हूं ।
तो जैसा:
function classLoader($class) {
$paths = explode(PATH_SEPARATOR, get_include_path());
$file = SITE_PATH . 'classes' . DS . $class . '.Class.php';
if (file_exists($file) == false)
{
$exists = false;
foreach ($paths as $path)
{
$tmp = $path . DS . 'library' . DS . 'classes' . DS . $class . '.Class.php';
if (file_exists ($tmp))
{
$exists = true;
$file = $tmp;
}
}
if (!$exists) { return false; }
}
include $file;
}
spl_autoload_register('classLoader');
मैं गलत मार्ग गए थे? क्या मैंने अभी @include
व्यवसाय किया है या क्या मैं इसे सही दिशा में कुछ हद तक कर रहा हूं?
spl अधिक व्यावहारिक और आधुनिक विधि Autoloading नहीं है? या वे मूल रूप से एक ही बात हैं? –