বনামের নেমস্পেসের প্রো এবং কনস পিএইচপি-তে অন্তর্ভুক্ত / প্রয়োজনীয়?


20

আমি সম্প্রতি পিএইচপি-তে নেমস্পেস ব্যবহার শুরু করেছি। আমি যখন তাদের প্রথম দেখলাম, আমি ভেবেছিলাম যে তাদের বাক্য গঠনটি কুৎসিত এবং আমি তাদের কখনই ব্যবহার করব না। যাইহোক, আমি একটি অটোলোডার তৈরি করেছি (spl_autoload_register) যা এটি তৈরি করে যাতে আমাকে আর কোনও বিবরণ অন্তর্ভুক্ত / আবশ্যক করতে হবে না।

আমি নেমস্পেসগুলি পছন্দ করি, তবে কি বিবৃতি অন্তর্ভুক্ত করা / অন্তর্ভুক্ত করার কোনও উদ্দেশ্যমূলক সুবিধা রয়েছে, বা একই লক্ষ্য অর্জনের জন্য এগুলি হুবহু একই পদ্ধতি?


1
নেমস্পেসগুলি তৃতীয় পক্ষের লাইব্রেরির সাথে সংঘর্ষ রোধ করে।
১act:০৯-এ সংশোধিত

1
এই মুহুর্তে নেমস্পেসগুলি সম্পর্কে আমার প্রাথমিক সুবিধা হ'ল অটোলয়েডিং। উদাহরণস্বরূপ, আমি new \Vendor\Namespace\Class()পদ্ধতি বা ক্লাসে পূর্বে প্রয়োজনের বিবৃতি ছাড়াই ইন-লাইন ব্যবহার করি ।
NobleUplift

3
অনেক পিএইচপি লাইব্রেরি নেমস্পেস ছাড়াই অটোলয়েডিং ব্যবহার করে। পিএইচপি নামের নামের স্থানগুলি বাধ্যতামূলক করা উচিত।
Re

আমার পক্ষ থেকে কোন তর্ক নেই। আমি এখানে তালিকাভুক্ত এই সমস্ত পরিবর্তন দেখতে চাই ।
NobleUplift

উত্তর:


21

নেমস্পেসগুলি কেবল অটোলোডিং ক্লাসের জন্য নয়। তারা নামকরণের বিরোধকেও প্রতিরোধ করে। আসলে, এটি তাদের প্রাথমিক উদ্দেশ্য।

বলুন Userআপনার অ্যাপ্লিকেশন ব্যবহারকারীদের সম্পর্কে তথ্য সঞ্চয় করার জন্য আপনার একটি প্রকল্প রয়েছে যার নামের একটি শ্রেণি প্রয়োজন , তবে একটি প্লাগইন Userতথ্য সংরক্ষণের জন্য নামের একটি (বিভিন্ন) শ্রেণিও ব্যবহার করে । নেমস্পেসগুলি আপনাকে একটি नेमস্পেসের মধ্যে আপনার শ্রেণি তৈরি করতে দেয় (বলুন MyApp) এবং প্লাগইনটিকে অন্য নামের স্থান ব্যবহার করতে দিন (বলুন CoolPlugin)। MyAppস্পেসের মধ্যে কোডগুলি কেবল User(যেমন, new User();) উল্লেখ করতে পারে এবং তাই CoolPluginস্পেসে কোডও করতে পারে; প্রত্যেকে প্রত্যাশিত ফলাফল পাবে। যখন আপনাকে অন্য নেমস্পেস থেকে কোড ব্যবহার করতে হবে , আপনি কেবল এটির উপসর্গই রেখেছেন। উদাহরণস্বরূপ, CoolPluginস্পেসের কোড Userএর MyAppমাধ্যমে শ্রেণি অ্যাক্সেস করতে পারেnew \MyApp\User();

বিকল্পটি হ'ল প্রতিটি শ্রেণীর সর্বত্র একটি জটিল নাম প্রয়োজন , যেমন class MyApp_Userএবং class CoolPlugin_User। নেমস্পেসগুলি আপনাকে বেশিরভাগ সময় জিনিসগুলিকে সহজীকরণ এবং সমস্ত সময় নামকরণ বিরোধের এড়াতে দেয়।

সম্পাদনা: এই প্রশ্নের উত্তর দিতে, "দুজনের মধ্যে কোনও পারফরম্যান্সের পার্থক্য রয়েছে কি?"

অর্থবহ এক নয়, না। আমি এটি বেঞ্চমার্ক করিনি, তবে ন্যানোসেকেন্ডের স্তরে সম্ভবত একটি পার্থক্য রয়েছে। এটি বলেছে যে, অতি-ক্ষুদ্র পারফরম্যান্স টুইটের জন্য কোডের মানকে ত্যাগ করা ভাল কৌশল নয়, সুতরাং আপনার নাম নির্বিশেষে ব্যবহার করা উচিত। একই ধরণের সমস্যার মানদণ্ডগুলির জন্য , PHPbench.com এবং এই স্ট্যাকওভারফ্লো উত্তরটি দেখুন

আপনার কোডটি এই ধরণের প্রসঙ্গে মাইক্রো-অপ্টিমাইজ করার বিষয়ে উদ্বিগ্ন হওয়ার আগে আপনার অবিশ্বাস্যরকম শক্ত এবং অবিশ্বাস্যভাবে সময় সংবেদনশীল (উচ্চ-ফ্রিকোয়েন্সি ট্রেডিং বা পারমাণবিক প্রতিক্রিয়া পরিচালনার জন্য ভাবেন) দরকার। যদি এটি সত্যিই সেই সময়ের-সংবেদনশীল হয় তবে আপনার সম্ভবত বা এমনকি কোডিং করা উচিত , পিএইচপি-র মতো ব্যাখ্যা করা ভাষাগুলি নয়।


1
+1 আমি সহজভাবে নোট করি যে প্রতিটি প্রকল্পের মনে হতে শুরু করে যে এটি সম্ভবত নামের জায়গাগুলির প্রয়োজন হতে পারে না এবং তারপরে সহজেই এমন পর্যায়ে চলে যায় যে এগুলি ছাড়া কাজ করার জন্য জিনিসগুলি হ্যাক করা হাস্যকর হয়ে ওঠে। ক্লাসে যেমন প্রয়োগ করা হয় তেমন পরিবর্তনশীল বিশ্বব্যাপী ঘোষণার মতোই নেমস্পেস না থাকা। বৃহত্তর কোড বেসগুলিতে বা যেগুলি লাইব্রেরির উদার ব্যবহার করে, এটি সম্পূর্ণ জগাখিচুড়ি হয়ে যায়।
ব্রায়ানএইচ

1
উপরে আমার সম্পাদনা দেখুন।
এলিক্সনাইড

2
আমি কি উল্লেখ করেছি যে আমি লার্জ হ্যাড্রন কলাইডারের জন্য একটি পিএইচপি ইন্টারফেস তৈরি করছি? অন্যথায়, আমি বিশ্বাস করি যে এই উত্তরটি যথেষ্ট, আপনাকে ধন্যবাদ।
NobleUplift

1
দয়া করে কোনও কোয়ার্ক তারকা বা ব্ল্যাক হোল তৈরি করবেন না! সাহায্য করে আনন্দ পেলাম.
এলিক্সনাইড

1
চিন্তা করবেন না, শুধুমাত্র অদ্ভুত। আমরা হ্যাড্রন কামান তৈরি করছি - আমার অর্থ, কিছু বিজ্ঞান এবং অস্ত্রধারী নয়।
NobleUplift
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.