বিদ্যমান কোডটি না ভেঙে আমি কীভাবে আঞ্চলিকভাবে কোনও লাইব্রেরিতে পিএইচপি নেমস্পেস যুক্ত করব?


10

আমার সংস্থা পিএইচপি 5.3 যোগ করা নেমস্পেসের অনেক আগে থেকেই বছরগুলিতে একটি মডুলার পিএইচপি কাঠামো তৈরি করেছে। সম্প্রতি, আমরা আমাদের লাইব্রেরির নতুন কোডে নেমস্পেসগুলি ব্যবহার শুরু করার সিদ্ধান্ত নিয়েছি এবং শেষ পর্যন্ত আমরা পুরানো কোডটির নামকরণের পরিকল্পনা করি। তবে, আমাদের কয়েকটি সমস্যা রয়েছে যা আমরা প্রাক-ভি 5.3 কোডবেজে নেমস্পেস যুক্ত করা ভাল ধারণা নয় কিনা তা নির্ধারণের জন্য কাজ করার চেষ্টা করছি:

  1. আমি কি কোনও শ্রেণীর নামকরণ করতে পারি তবে বিশ্বব্যাপী নেমস্পেসও আমদানি (ব্যবহার) করতে পারি যাতে সমস্ত গ্লোবাল শ্রেণীর \উপসর্গের প্রয়োজন হয় না ?
  2. আমরা যদি আমাদের লাইব্রেরিতে একটি বিদ্যমান শ্রেণীর নাম রাখি, তবে ফ্রেমওয়ার্কটি আপগ্রেড করার সাথে সাথে আমরা কীভাবে সমস্ত বিদ্যমান প্রকল্পগুলি ভাঙ্গতে রোধ করতে পারি? উদাহরণস্বরূপ, গ্রন্থাগারটি কি ক্লাসের নাম পরিবর্তন করতে ThemeEngineপারে \module\theme\ThemeEngine, তবে বিদ্যমান ওয়েবসাইটগুলি কোনও কোড পরিবর্তন ThemeEngineছাড়াই কল করতে পারে ? যদি তা হয় তবে সেই কোডটি কেমন হবে?

উত্তর:


2
  1. দুর্ভাগ্যক্রমে, আপনি কেবলমাত্র ক্লাসের নামস্পেসগুলি 'ব্যবহার' করতে পারবেন না: http://www.php.net/manual/en/language.namespaces.importing.php । সম্পাদনা করুন: আপনি বিশ্বব্যাপী নেমস্পেস থেকে ক্লাসগুলি আমদানি করতে পারেন, যেমন তারা উদাহরণগুলির মধ্যে একটিতে অ্যারেঅজেক্টের সাথে করেছিলেন।

  2. আপনার ব্যবহারের বিবৃতিগুলির একটি বিশ্বব্যাপী বিভাগ থাকতে পারে যাতে গ্লোবাল নেমস্পেসে থাকা সমস্ত প্রাক-বিদ্যমান ক্লাসগুলির তাত্ত্বিকভাবে ক্লাসগুলি ঠিকঠাক পাওয়া উচিত। তাত্ত্বিকভাবে...

আমরা আপনার মত একই নৌকায়, সাজানো। আমাদের কাছে কিছু পুরানো কোড রয়েছে যা নেমস্পেসগুলি ব্যবহার করে না, তবে _ নেমস্পেস ফ্যাকার ব্যবহার করে (যেমন জেনড_ডিবি_টেবল ...) এবং আমাদের কিছু পুরানো কোড রয়েছে যা জাল নেমস্পেসগুলিও রাখে না। আমরা সম্ভবত একই রুটটি নিয়ে যাচ্ছি, তবে এটি এখনও সম্ভব কিনা তা আমাদের পরীক্ষা করা দরকার। শুভকামনা!


1

হ্যাঁ আমি শেষ পর্যন্ত যা করেছি তা হ'ল - আমার প্রয়োজনীয় পৃথক শ্রেণিগুলি আমদানি করার জন্য 'ব্যবহার'

উদাহরণস্বরূপ, প্রতিটি কিছুর সামনে '/' যুক্ত করার পরিবর্তে:

\DateTime()

আমি আমার নেমস্পেসের নিচে যুক্ত করেছি

namespace MyProject;
use DateTime;

...
DateTime();     //without \
...
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.