আমার দুটি সেন্ট এখানে:
আমি একটি পিএইচপি অ্যাপ্লিকেশন রিফ্যাক্টর করছি এবং আমি চেষ্টা করছি যতটা সম্ভব নির্ভরতার ইনজেকশন রয়েছে
আপনি নির্ভর করে না এমন ইনজেকশন কাঠামো ব্যবহার করছেন কিনা তা আপনি উল্লেখ করবেন না। আমি মনে করি আপনার অবশ্যই করা উচিত। এমন কিছু ব্যবহার করুন যা আপনাকে প্রয়োজনীয় বৈশিষ্ট্যগুলি দেয়: /programming/9348376/guice- Like-d dependency-inication-frameworks-in-php ।
আমি এখন যে সমস্যাটি চালিয়েছি তা হ'ল আমি আসলে কোন নতুন বস্তু তৈরি করতে পারি? দেখে মনে হচ্ছে আমি শীর্ষ স্তরের ক্লাসে শেষ করব, নতুন কোনও বস্তু তৈরি করব যেখানে অন্য কোথাও যাওয়ার দরকার নেই। এটি ভুল অনুভব করে।
আপনার অ্যাপ্লিকেশনটি রচনা করা প্রাথমিক বস্তুর ইনস্ট্যান্টেশনের জন্য আপনি সাধারণত কনফিগারেশন বা কেন্দ্রীয় পয়েন্ট ব্যবহার করেন। ধারক আপনার জন্য বস্তু তৈরি করবে।
তারপরে আপনি আইওসি ধারকটির মাধ্যমে অবজেক্টস (পরিষেবা, সরবরাহকারী, নিয়ন্ত্রক ...) অ্যাক্সেস করতে পারেন। এটি প্রয়োজনে স্বচ্ছভাবে আপনার জন্য একটি বস্তু তৈরি করবে, বা আপনাকে প্রয়োজনীয় বিদ্যমান উদাহরণটির জন্য একটি রেফারেন্স দেবে।
অবশ্যই, অবজেক্টগুলির আপনার নির্দিষ্ট প্রয়োগের ভিতরে আপনি অন্যান্য বস্তুগুলি ইনস্ট্যান্ট করতে পারেন যার উপর আপনার ডিআই (ডেটা স্ট্রাকচার, কাস্টম ধরণের ইত্যাদি) প্রয়োজন হয় না, তবে এটি সাধারণ প্রোগ্রামিং।
আমি কয়েকটি ব্লগ পড়েছি যা সমস্ত বিষয়বস্তু তৈরি করতে কারখানার ক্লাস ব্যবহার করে এবং তারপরে আপনি কারখানাকে অন্য শ্রেণিতে ইনজেক্ট করেন। তারপরে আপনি কারখানার পদ্ধতিগুলিতে কল করতে পারেন এবং কারখানাটি আপনার জন্য নতুন বস্তু তৈরি করে।
সাধারণত, আপনি যদি আইওসি ফ্রেমওয়ার্কটি আপনার কারখানার মাধ্যমে কিছু আইওসি অবজেক্ট ইনস্ট্যান্ট করতে চান তবে আপনি একটি কারখানা ব্যবহার করেন (কোনও নির্দিষ্ট বস্তুর তাত্ক্ষণিককরণ করার জন্য কিছু অতিরিক্ত কাজ প্রয়োজন হলে এটি প্রয়োজন)। যদি আপনি কেবল "নতুন অবজেক্ট ()" দিয়ে আপনার অবজেক্ট তৈরি করতে এবং কিছু বৈশিষ্ট্য নির্ধারণ করতে পারেন তবে আপনি অগত্যা কোনও কারখানার প্যাটার্ন ব্যবহার করতে চান না।
অন্য কথায়, আমি বলব যে কোনও শ্রেণি বা শ্রেণীর গোষ্ঠীর জন্য কারখানার প্যাটার্ন ব্যবহার আপনি কীভাবে ডিআই ডি ব্যবহার করবেন না তার উপর নির্ভর করে আপনি কীভাবে এই শ্রেণিগুলির মডেল করতে চান তার উপর নির্ভর করে (যদি না আপনার ডিআই বাস্তবায়ন স্পষ্টভাবে কারখানার প্রয়োজন হয় যা অস্বাভাবিক)।
আপনি যখন কোনও তৃতীয় পক্ষের লাইব ব্যবহার করছেন যা ইতিমধ্যে কারখানার ব্যবহারের প্রয়োজন হয় তখন আপনি কারখানাটি ব্যবহার করতে আপনার আইওসি কাঠামোটিও কনফিগার করেন। এক্ষেত্রে আপনার কোনও নিয়ন্ত্রণ নেই এবং আপনার আইওসি কন্টেইনারটি আপনাকে বলতে হবে: "আরে, আমি যখন এই ইন্টারফেসগুলির মধ্যে একটি জিজ্ঞাসা করি তখন আমাকে একটি উপযুক্ত উদাহরণ সরবরাহ করার জন্য আপনাকে এই কারখানাটি ব্যবহার করতে হবে"।
এটি করার সাথে আমার উদ্বেগ এখন আমার কারখানার ক্লাসগুলি সকলের জন্য একটি নতুন ফ্রি হতে চলেছে! আমি অনুমান করি যেহেতু তারা কারখানার ক্লাস হিসাবে এটি ঠিক আছে তবে কারখানার প্যাটার্ন এবং ডিআই ব্যবহার করার সময় কিছু নিয়ম আছে বা আমি এখানে চিহ্ন ছাড়ছি।
এই ক্ষেত্রে, এটি মনে হচ্ছে যে আপনাকে এই বিষয়গুলি / পরিষেবাদি / নিয়ন্ত্রকদের / যাই হোক না কেন কারখানার নিদর্শনগুলি ব্যবহার করার দরকার নেই এবং আপনি কেবলমাত্র নতুন আইওসিটিকে উপযুক্ত শ্রেণীর সাথে ইনস্ট্যান্ট করতে কনফিগার করতে পারেন এবং সমস্ত কিছু ইনজেক্ট করতে পারেন।
আমি আসা করি এটা সাহায্য করবে.