কম্পিউটার

পিএইচপি-তে সংজ্ঞায়িত নামস্থানের তালিকা পাওয়া কি সম্ভব?


প্রদত্ত ফাইল 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] => ) )

বিভিন্ন নামস্থান তৈরি করা হয় (প্রথম নামস্থান, দ্বিতীয় নামস্থান..) এবং খালি শ্রেণি ঘোষণা করা হয় (নতুন_শ্রেণী)। নামস্থানের একটি অ্যারে তৈরি করা হয় এবং ঘোষিত ক্লাসগুলির মধ্য দিয়ে একটি foreach লুপ চলে। একটি রেগুলার এক্সপ্রেশন ম্যাচ করা হয় এবং সেই নির্দিষ্ট পরিবেশে সংজ্ঞায়িত নামস্থানগুলি প্রদর্শিত হবে৷


  1. পিএইচপি-তে একটি অ্যারের থেকে এলোমেলো মান কীভাবে পাওয়া যায়?

  2. পিএইচপি-তে নেমস্পেস কীওয়ার্ড কী?

  3. PHP-তে defined() ফাংশন

  4. পিএইচপি-তে list() ফাংশন