PHP में OOP क्लास ऑटोलोडिंग

आप पहले से ही जानते हैं कि किसी भी क्लास का उपयोग करने के लिए, हमें उसे require के माध्यम से इंपोर्ट करना होगा। जब प्रोजेक्ट में बहुत सारी क्लासेस होती हैं, तो बहुत सारे इंपोर्ट हो जाते हैं, जिन्हें लिखना बहुत असुविधाजनक होता है और नियंत्रित करना मुश्किल होता है।

इस समस्या के समाधान के लिए, PHP में क्लासेस की ऑटोलोडिंग जोड़ी गई थी। ऑटोलोडिंग PHP को कोड में किसी क्लास का उपयोग करने के प्रयास पर स्वचालित रूप से उस क्लास वाली फाइल लोड करने की अनुमति देती है। हालांकि, बिना कुछ किए क्लासेस लोड नहीं होंगी - उन्हें किसी फाइल और फोल्डर नामकरण समझौते का पालन करते हुए, साइट की फोल्डर संरचना में एक विशेष तरीके से रखना होगा। आप PHP में बिल्ट-इन समझौते का उपयोग कर सकते हैं, या अपना खुद का समझौता बना सकते हैं और उसका उपयोग कर सकते हैं।

आइए सबसे पहले PHP के मानक समझौते को समझते हैं। यह समझौता इस बात में निहित है कि यदि हमारे पास क्लास वाली कोई फाइल है, तो साइट की फोल्डर में उस फाइल का पथ उस फाइल के नेमस्पेस से मेल खाना चाहिए, और फाइल का नाम उसमें मौजूद क्लास के नाम से मेल खाना चाहिए। साथ ही, फोल्डर और फाइल के नाम लोअरकेस में होने चाहिए।

आइए एक उदाहरण देखें। मान लीजिए हमारे पास निम्नलिखित क्लास है:

/core/admin/pagecontroller.php<?php
  namespace Core\Admin;
  
  class PageController
  {
    
  }
?>

समझौते के अनुसार, इस क्लास को /core/admin/ फोल्डर में pagecontroller.php फाइल में स्थित होना चाहिए।

आइए अब index.php फाइल में, require के माध्यम से इंपोर्ट किए बिना, ऑटोलोडिंग का उपयोग करके अपनी क्लास का उपयोग करें। इसके लिए, उस फाइल की शुरुआत में, जहां क्लासेस का उपयोग किया जाता है, spl_autoload_register फ़ंक्शन को कॉल करना चाहिए। आइए इसे करें:

index.php<?php
  spl_autoload_register(); // ऑटोलोडिंग सक्षम करें
  
  $obj = new Core\Admin\PageController; // आराम से ऑब्जेक्ट बनाएं
?>
Задание 1

index.php फाइल में क्लास ऑटोलोडिंग सक्षम करें। फोल्डर और फाइल नामकरण समझौते का पालन करते हुए क्लास Core\User, क्लास Core\Admin\Controller और क्लास Project\User\Data बनाएं। index.php फाइल में इन क्लासेस के ऑब्जेक्ट बनाएं।