Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> PHP

PHP नेम रिज़ॉल्यूशन नियम: नाम कैसे रिज़ॉल्व होते हैं


परिचय

PHP कोड में नेमस्पेस की उपस्थिति निम्नलिखित नियमों के अधीन रिज़ॉल्व होती है:

  • नेमस्पेस सेपरेटर सिंबल (\) के बिना एक नेमस्पेस पहचानकर्ता का अर्थ है कि यह वर्तमान नेमस्पेस को संदर्भित कर रहा है। यह एक अनक्वालिफाइड नाम है।

  • यदि इसमें सेपरेटर सिंबल है जैसे myspace\space1, तो यह myspace के तहत सबनेमस्पेस space1 को रिज़ॉल्व करता है। इस प्रकार का नामकरण सापेक्ष नेमस्पेस है।

  • पूरी तरह से क्वालिफाइड नेमस्पेस का नाम \ कैरेक्टर से शुरू होता है। उदाहरण के लिए, \myspace या \myspace\space1।

  • फुली क्वालिफाइड नाम निरपेक्ष नेमस्पेस को रिज़ॉल्व करते हैं। उदाहरण के लिए \myspace\space1 myspace\space1 नेमस्पेस को रिज़ॉल्व करता है।

  • यदि नाम ग्लोबल नेमस्पेस में होता है, तो namespace\ प्रीफिक्स हटा दिया जाता है। उदाहरण के लिए namespace\space1 space1 को रिज़ॉल्व करता है।

  • हालांकि, यदि यह किसी अन्य नेमस्पेस के अंदर होता है, तो इसका व्यवहार अलग होता है। उदाहरण के लिए, यदि namespace\space1 myspace के अंदर है, तो यह myspace\space1 के बराबर है।

  • क्वालिफाइड नाम में नाम का पहला सेगमेंट वर्तमान क्लास/नेमस्पेस इम्पोर्ट टेबल के अनुसार अनुवादित होता है।

  • यदि कोई इम्पोर्ट नियम लागू नहीं होता, तो वर्तमान नेमस्पेस नाम के सामने जोड़ दिया जाता है।

  • क्लास-जैसे नाम क्लास/नेमस्पेस इम्पोर्ट टेबल के अनुसार अनुवादित होते हैं, फंक्शन नाम फंक्शन इम्पोर्ट टेबल के अनुसार और कॉन्स्टेंट्स कॉन्स्टेंट इम्पोर्ट टेबल के अनुसार।

  • अनक्वालिफाइड नामों के लिए, यदि कोई इम्पोर्ट नियम लागू नहीं होता और नाम फंक्शन या कॉन्स्टेंट को संदर्भित करता है और कोड ग्लोबल नेमस्पेस के बाहर है, तो नाम रनटाइम पर रिज़ॉल्व होता है। पहले यह वर्तमान नेमस्पेस से फंक्शन ढूंढता है, फिर ग्लोबल फंक्शन को खोजने और कॉल करने का प्रयास करता है।

व्यावहारिक उदाहरण

<?php
namespace A\B\C;

class MyClass {}
function myfunction() {}
const MYCONST = 1;

// अनक्वालिफाइड नाम
$obj = new MyClass();        // A\B\C\MyClass
myfunction();                // A\B\C\myfunction
echo MYCONST;                // A\B\C\MYCONST

// क्वालिफाइड नाम
$obj = new D\MyClass();      // A\B\C\D\MyClass
D\myfunction();              // A\B\C\D\myfunction
echo D\MYCONST;              // A\B\C\D\MYCONST

// फुली क्वालिफाइड नाम
$obj = new \GlobalClass();   // GlobalClass (ग्लोबल)
\globalFunction();           // globalFunction (ग्लोबल)
echo \GLOBAL_CONST;          // GLOBAL_CONST (ग्लोबल)

// use के साथ इम्पोर्ट
use X\Y\Z as AliasedClass;
$obj = new AliasedClass();   // X\Y\Z
?>

फॉलबैक नियम (ग्लोबल फंक्शन्स/कॉन्स्टेंट्स के लिए)

यदि वर्तमान नेमस्पेस में कोई फंक्शन/कॉन्स्टेंट नहीं मिलता, तो PHP ग्लोबल नेमस्पेस में खोजता है:

<?php
namespace MyProject;

strlen("test");     // पहले MyProject\strlen खोजता है, नहीं मिलने पर ग्लोबल strlen() कॉल करता है
MY_CONSTANT;        // पहले MyProject\MY_CONSTANT खोजता है, नहीं मिलने पर ग्लोबल MY_CONSTANT
?>

यह फॉलबैक केवल फंक्शन्स और कॉन्स्टेंट्स के लिए काम करता है, क्लासेज के लिए नहीं।

  1. - PHP में वेरिएबल नाम को स्ट्रिंग के रूप में कैसे प्राप्त करें

    PHP में वेरिएबल नाम को स्ट्रिंग के रूप में प्राप्त करना उदाहरण 1: वेरिएबल वेरिएबल्स () <?php $a = This is it!; $$a = Demo string!; print($a); ?> आउटपुट This is it! व्याख्या: $a में This is it! है। $$a वेरिएबल $This is it! बनाता है (मान्य लेकिन असामान्य)। यह **वेरिएबल नाम प्राप्त नहीं करत

  1. - PHP में नेमस्पेस कीवर्ड क्या है?

    इस लेख में, हम PHP में नेमस्पेस के बारे में जानने जा रहे हैं। PHP में जब हम बड़े एप्लिकेशन बना रहे होते हैं या थर्ड-पार्टी एप्लिकेशन/लाइब्रेरी को इंटीग्रेट कर रहे होते हैं तो क्लास नामों, फंक्शन नामों के बीच टकराव की संभावना हो सकती है। इसलिए इन समस्याओं से बचने के लिए PHP नेमस्पेस संबंधित क्लासेज,

  1. - PHP में zip_entry_name() फंक्शन

    विवरण zip_entry_name() फंक्शन zip आर्काइव फाइल का नाम लौटाता है। सिंटैक्स zip_entry_name(zip_entry) पैरामीटर्स zip_entry − zip_open() के साथ खोली गई zip फाइल का उल्लेख यहां किया जाना है। रिटर्न वैल्यू zip_entry_name() फंक्शन zip आर्काइव फाइल का नाम लौटाता है। उदाहरण निम्न एक उदाहरण है। मान लीज