$ obj = CLASS :: getInstance ()। তারপরে আমরা সেটারগুলি ব্যবহার করে নির্ভরতা ইনজেকশন করি এবং $ obj-> initInstance () ব্যবহার করে সূচনা শুরু করি;
আমি মনে করি আপনি এটি করা প্রয়োজনের চেয়ে আরও বেশি কঠিন করে তুলছেন। আমরা কনস্ট্রাক্টরের মাধ্যমে ঠিকঠাক নির্ভরতা ইনজেকশন করতে পারি - এবং আপনার যদি অনেকগুলি থাকে তবে কেবল অভিধান-এর মতো কাঠামো ব্যবহার করুন যাতে আপনি কী ব্যবহার করতে চান তা নির্দিষ্ট করতে পারেন:
$obj = new CLASS(array(
'Frobnicator' => (),
'Foonicator' => (),
));
এবং কনস্ট্রাক্টরের মধ্যে, আপনি এর মতো ধারাবাহিকতা নিশ্চিত করতে পারেন:
if (!array_key_exists('Frobnicator', $args)) {
throw new Exception('Frobnicator required');
}
if (!array_key_exists('Foonicator', $args)) {
$args['Foonicator'] = new DefaultFoonicator();
}
$args
তারপরে প্রয়োজনীয় হিসাবে ব্যক্তিগত সদস্য সেট করতে ব্যবহার করা যেতে পারে।
কনস্ট্রাক্টরের মধ্যে সম্পূর্ণরূপে এটি করা হয়ে গেলে, মধ্যবর্তী অবস্থা কখনই থাকবে না যেখানে $obj
উপস্থিত রয়েছে তবে প্রাথমিকভাবে নয়, যেমন প্রশ্নটিতে বর্ণিত সিস্টেমে থাকবে। এই ধরনের মধ্যবর্তী অবস্থাগুলি এড়ানো ভাল, কারণ আপনি গ্যারান্টি দিতে পারবেন না যে জিনিসটি সর্বদা সঠিকভাবে ব্যবহৃত হবে।