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

क्या PHP में परिभाषित नामस्थानों की सूची प्राप्त करना संभव है?

फ़ाइल 1 में नेमस्पेस ns_1 है और फ़ाइल 2 में नेमस्पेस ns_2 है, अगर फ़ाइल 1 और फ़ाइल 2 फ़ाइल 3 में शामिल हैं, तो यह जानने का कोई तरीका नहीं है कि नामस्थान ns_1 और ns_2 लोड हो गए हैं।

'class_exists' फ़ंक्शन का उपयोग करने का एकमात्र तरीका है और विशिष्ट नाम स्थान वाले वर्गों की सूची 'get_declared_classes' का उपयोग करके प्राप्त की जा सकती है। सीधे शब्दों में कहें, प्राप्त इस डेटा का उपयोग सभी घोषित वर्ग नामों को दिए गए मिलान नामस्थान को खोजने के लिए किया जा सकता है -

function namespaceExists($namespace) {
   $namespace .= "\\";
   foreach(get_declared_classes() as $name)
   if(strpos($name, $namespace) === 0) return true;
   return false;
}

---- या ---

उदाहरण

<?php
namespace FirstNamespace;
class new_class {}
namespace SecondNamespace;
class new_class {}
namespace ThirdNamespace\FirstSubNamespace;
class new_class {}
namespace ThirdNamespace\SecondSubNamespace;
class new_class {}
namespace SecondNamespace\FirstSubNamespace;
class new_class {}
$namespaces=array();
foreach(get_declared_classes() as $name) {
   if(preg_match_all("@[^\\\]+(?=\\\)@iU", $name, $matches)) {
      $matches = $matches[0];
      $parent =&$namespaces;
      while(count($matches)) {
         $match = array_shift($matches);
         if(!isset($parent[$match]) && count($matches))
         $parent[$match] = array();
         $parent =&$parent[$match];
      }
   }
}
print_r($namespaces);

आउटपुट

यह निम्नलिखित आउटपुट देगा -

Array ( [FirstNamespace] => [SecondNamespace] => Array ( [FirstSubNamespace] => ) [ThirdNamespace] => Array ( [FirstSubNamespace] => [SecondSubNamespace] => ) )

अलग-अलग नामस्थान बनाए जाते हैं (फर्स्टनेमस्पेस, सेकेंडनेमस्पेस ..) और खाली वर्ग घोषित किया जाता है (new_class)। नेमस्पेस की एक सरणी बनाई जाती है और घोषित कक्षाओं के माध्यम से एक फ़ोरैच लूप चलता है। एक नियमित अभिव्यक्ति मिलान किया जाता है और उस विशिष्ट वातावरण में परिभाषित नामस्थान प्रदर्शित किए जाएंगे।


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

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

  1. PHP में परिभाषित () फ़ंक्शन

    PHP में परिभाषित () फ़ंक्शन यह जांचता है कि स्थिरांक मौजूद है या नहीं। सिंटैक्स defined(name) पैरामीटर नाम - स्थिरांक का नाम। वापसी परिभाषित () फ़ंक्शन सही है यदि स्थिरांक मौजूद है अन्यथा गलत है। उदाहरण निम्नलिखित एक उदाहरण है जो जांचता है कि क्या कोई स्थिरांक मौजूद है। <?php    

  1. PHP में सूची () फ़ंक्शन

    सूची () फ़ंक्शन चर निर्दिष्ट करता है जैसे कि वे एक सरणी थे। यह निर्दिष्ट सरणी देता है। सिंटैक्स list(variable1, variable2, variable 3, ...) पैरामीटर चर1 - पहला चर चर2 − अधिक चर चर3 − अधिक चर वापसी सूची () फ़ंक्शन निर्दिष्ट सरणी देता है। उदाहरण निम्नलिखित एक उदाहरण है - <?php $arr = a