আপনি কীভাবে কোনও পিএইচপি ভিত্তিক, অবজেক্ট ওরিয়েন্টড প্রজেক্টে ডেটাবেস ইঞ্জিন, ব্যবহারকারীর বিজ্ঞপ্তি, ত্রুটি পরিচালনা এবং এ জাতীয় সহায়তাকারী অবজেক্টগুলিকে কীভাবে সংগঠিত ও পরিচালনা করেন?
বলুন আমার কাছে একটি বড় পিএইচপি সিএমএস রয়েছে। সিএমএস বিভিন্ন ক্লাসে সংগঠিত হয়। কয়েকটি উদাহরণ:
- ডাটাবেস অবজেক্ট
- ইউজার ম্যানেজমেন্ট
- আইটেমগুলি তৈরি / পরিবর্তন / মুছতে একটি এপিআই
- শেষ ব্যবহারকারীকে বার্তা প্রদর্শন করার জন্য একটি বার্তা অবজেক্ট object
- একটি প্রসঙ্গ হ্যান্ডলার যা আপনাকে ডান পৃষ্ঠায় নিয়ে যায়
- একটি নেভিগেশন বার ক্লাস যা বোতামগুলি দেখায়
- একটি লগিং অবজেক্ট
- সম্ভবত, কাস্টম ত্রুটি পরিচালনা
প্রভৃতি
আমি চিরন্তন প্রশ্নটির সাথে কাজ করছি, কীভাবে এই বিষয়বস্তুর প্রয়োজনমতো সিস্টেমের প্রতিটি অংশে অ্যাক্সেসযোগ্য করা যায়।
আমার প্রথম উদ্বেগ, বহু বছর আগে একটি $ অ্যাপ্লিকেশন গ্লোবাল ছিল যা এই ক্লাসগুলির সূচনাপ্রাপ্ত দৃষ্টান্ত ধারণ করে।
global $application;
$application->messageHandler->addMessage("Item successfully inserted");
আমি তখন সিঙ্গলটন প্যাটার্ন এবং একটি কারখানার ফাংশনে পরিবর্তিত হয়েছি:
$mh =&factory("messageHandler");
$mh->addMessage("Item successfully inserted");
তবে আমি তাতেও খুশি নই। ইউনিট পরীক্ষা এবং এনক্যাপসুলেশন আমার কাছে আরও বেশি গুরুত্বপূর্ণ হয়ে ওঠে এবং আমার গ্লোবাল / সিঙ্গেলটনের পিছনের যুক্তিটি বুঝতে ওওপির প্রাথমিক ধারণাটি নষ্ট করে দেয়।
তারপরে অবশ্যই প্রতিটি অবজেক্টের সাহায্যকারী অবজেক্টগুলির জন্য প্রয়োজনীয় সংখ্যক পয়েন্টার দেওয়ার সম্ভাবনা রয়েছে, সম্ভবত খুব পরিষ্কার, সম্পদ-সংরক্ষণ এবং পরীক্ষার বান্ধব উপায় তবে দীর্ঘমেয়াদে এটির রক্ষণাবেক্ষণ সম্পর্কে আমার সন্দেহ আছে।
বেশিরভাগ পিএইচপি ফ্রেমওয়ার্কগুলি আমি সিঙ্গলটন প্যাটার্ন, বা ফাংশনগুলি যা আরম্ভকৃত অবজেক্টগুলিতে অ্যাক্সেস করে তা ব্যবহারে দেখেছি। উভয় সূক্ষ্ম পন্থা, কিন্তু আমি যেমন বলেছি আমি দু'জনের সাথেই সন্তুষ্ট নই।
আমি এখানে কোন সাধারণ প্যাটার্নগুলি বিদ্যমান তা নিয়ে আমার দিগন্তকে আরও প্রশস্ত করতে চাই। আমি দীর্ঘমেয়াদী , বাস্তব-বিশ্বের দৃষ্টিকোণ থেকে এটি নিয়ে আলোচনা করে এমন সংস্থানগুলির জন্য উদাহরণ, অতিরিক্ত ধারণা এবং পয়েন্টার সন্ধান করছি ।
এছাড়াও, আমি ইস্যুটির বিশেষায়িত, কুলুঙ্গি বা সাধারণ উদ্ভট পদ্ধতি সম্পর্কে শুনতে আগ্রহী ।
$mh=&factory("messageHandler");
অর্থহীন এবং কোনও কার্যকারিতা সুবিধা দেয় না। তদ্ব্যতীত, এটি 5.3 এ অবচয় করা হয়েছে।