पीएचपी autoloader करने के लिए सिर्फ एक तंत्र है एक फ़ाइल जब एक वर्ग निर्माण किया है शामिल हैं।
यदि आप अपनी सभी कक्षाएं 1 फ़ाइल में डालते हैं, तो आपको ऑटोलोडर की आवश्यकता नहीं होती है। बेशक, जब प्रोग्रामिंग OO आप हर वर्ग को उसकी अपनी फ़ाइल, और thats दे जहां autoloader में आता है
कुछ उदाहरण:।
class AutoLoader
{
public function __construct()
{
spl_autoload_register(array($this, 'ClassLoader'));
}
public function ClassLoader($class)
{
if(class_exists($class, false))
return true;
if(is_readable('path_to_my_classes/' . $class . '.php'))
include_once 'path_to_my_classes/' . $class . '.php'
}
}
$autoloader = new AutoLoader();
यहाँ क्या होता है यह है कि जब autoloader वर्ग बनाया जाता है, वर्ग विधि क्लासलोडर एक ऑटोलोडर के रूप में पंजीकृत है।
जब कोई नई कक्षा बनाई जाती है, तो क्लासलोडर विधि पहले जांचती है कि कक्षा के लिए फ़ाइल पहले ही लोड हो चुकी है। यदि नहीं, तो कक्षा को पथ के साथ तैयार किया जाता है और विस्तार के साथ बढ़ाया जाता है। अगर फ़ाइल पठनीय है तो इसे शामिल किया गया है।
बेशक, आप इसे बहुत परिष्कृत बना सकते हैं। चलिए नामस्थान और मैपर के साथ एक उदाहरण देखें। मान लें हम autoloader वर्ग में हैं:
private $mapper array('Foo' => 'path_to_foo_files/', 'Bar' => 'path_to_bar_files/');
public function ClassLoader($class)
{
if(class_exists($class, false))
return true;
// break into single namespace and class name
$classparts = explode('\\', $class);
$path = $this->mapper[$classparts[0]];
if(is_readable($path . $classparts[1] . '.php'))
include_once $path . $classparts[1] . '.php'
}
यहाँ, classname एक namespace हिस्सा है और एक classname भागों में splittet है। नामस्थान भाग को मैपर सरणी में देखा जाता है, और उस पथ को तब PHP फ़ाइल के लिए पथ शामिल करने के रूप में उपयोग किया जाता है।
ये केवल उदाहरण हैं कि एक ऑटोलोडर के साथ क्या किया जा सकता है। उत्पादन के लिए कुछ और काम करने की जरूरत है, उदाहरण के लिए त्रुटि जांच।
ऐसा लगता है कि आपके प्रश्न में लिंक –
जानने के लिए पर्याप्त है "क्या php class Autoloader एक फ़ाइल खोलता है और कक्षा के नाम के लिए जांच करता है?" - यह फाइल में सभी कक्षाओं की खोज करता है। – zerkms
लेकिन मुझे यह पता चल सकता है कि यह कैसे कार्यान्वित किया गया है, ऑटोलोडर की पूरी प्रक्रिया को खरोंच से, यह मेरे लिए दिलचस्प है कि यह कैसे लिखा गया है कि इसका पहला लिखा – meWantToLearn