मैं PHP 5.3 में नेमस्पेस के बारे में सीख रहा हूं और मैं नेमस्पेस ऑटोलोडिंग का उपयोग करना चाहता हूं। मुझे यह SplClassLoader class मिला, लेकिन मैं यह नहीं समझ सकता कि यह कैसे काम करता है।SplClassLoader के साथ PHP Autoloading?
मान लें कि मैं इस तरह निर्देशिका संरचना है:
system
- framework
- http
- request.php
- response.php
index.php
SplClassLoader.php
मैं कक्षा autoloading कैसे सक्षम करूं? request.php
और response.php
में क्या नामस्थान होना चाहिए?
namespace framework\http;
class Request
{
public function __construct()
{
echo __CLASS__ . " constructer!";
}
}
और यह response.php
है:
यह request.php
है
namespace framework\http;
class Request
{
public function __construct()
{
echo __CLASS__ . " constructed!";
}
}
और index.php
में मेरे पास है:
require_once("SplClassLoader.php");
$loader = new SplClassLoader('framework\http', 'system/framework');
$loader->register();
$r = new Request();
मैं इस त्रुटि संदेश मिलता है:
Fatal error: Class 'Request' not found in C:\wamp\apache\htdocs\php_autoloading\index.php on line 8
यह क्यों काम नहीं कर रहा है? मैं अपनी परियोजनाओं में SplClassLoader
का उपयोग कैसे कर सकता हूं ताकि यह मेरी कक्षाओं को लोड/आवश्यकता हो, और मैं फ़ोल्डर्स और नेमस्पेस को कैसे सेट और नामित करूँ?
मुझे लगता है कि आपकी फ़ाइल और निर्देशिका नामों को पूंजी अक्षरों से शुरू करने की आवश्यकता हो सकती है? –
@ एड्रियन मैकनील: खिड़कियों में नहीं, लेकिन आप सही हैं, इसे बनाया जाना चाहिए। – hakre