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] => ) 
)

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


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

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

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

    विवरण PHP में defined() फंक्शन चेक करता है कि कोई कॉन्स्टेंट मौजूद है या नहीं। सिंटैक्स defined(name) पैरामीटर्स name − कॉन्स्टेंट का नाम। रिटर्न वैल्यू defined() फंक्शन कॉन्स्टेंट मौजूद होने पर true अन्यथा false लौटाता है। उदाहरण निम्न उदाहरण चेक करता है कि कोई कॉन्स्टेंट मौजूद है या नहीं: &l

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

    PHP में list() एक भाषा निर्माण (language construct) है जो सरणी के मानों को अलग-अलग चरों (variables) में निर्दिष्ट (assign) करता है। यह केवल संख्यात्मक सूचकांकित सरणियों (indexed arrays) के साथ काम करता है और 0 से शुरू होने वाले सूचकांक मानता है। सिंटैक्स (Syntax) list(mixed $var1, mixed $var2, ...