যাক আমি যখনই কোনও CRUD অপারেশন করি বা একটি নির্দিষ্ট উপায়ে একটি সম্পর্ক পরিবর্তন করি তখনও আমি অন্য কিছু করতে চাই Let's উদাহরণস্বরূপ, যখনই কেউ পোস্ট প্রকাশ করে আমি বিশ্লেষণের জন্য কোনও টেবিলে কিছু সঞ্চয় করতে চাই। সম্ভবত সেরা উদাহরণ না হলেও সাধারণভাবে এই "গ্রুপযুক্ত" কার্যকারিতা অনেক রয়েছে।
সাধারণত আমি এই ধরণের যুক্তিটি নিয়ন্ত্রকদের মধ্যে রাখি। যতক্ষণ না আপনি প্রচুর জায়গায় এই কার্যকারিতাটি পুনরুত্পাদন করতে চান যতক্ষণ না এই সমস্তই খুব সুন্দর and যখন আপনি পার্টিয়ালগুলি পেতে শুরু করেন, একটি এপিআই তৈরি করে এবং ডামি সামগ্রী তৈরি করে তা জিনিসগুলি DRY রাখার ক্ষেত্রে একটি সমস্যা হয়ে দাঁড়ায়।
এটি পরিচালনা করতে আমি যেভাবে দেখেছি তা হ'ল ইভেন্টগুলি, সংগ্রহশালা, লাইব্রেরিগুলি এবং মডেলগুলিতে যুক্ত করা। এখানে প্রতিটি আমার বোঝার জন্য:
পরিষেবাগুলি: বেশিরভাগ লোকেরা সম্ভবত এই কোডটি রাখবেন। পরিষেবাদিগুলির সাথে আমার প্রধান সমস্যাটি হ'ল কখনও কখনও তাদের মধ্যে নির্দিষ্ট কার্যকারিতা খুঁজে পাওয়া শক্ত হয় এবং আমার মনে হয় তারা কখন ভ্রষ্টর ব্যবহারে মনোযোগী হয় সে সম্পর্কে তারা ভুলে যায়। আমি কীভাবে জানতে পারি যে publishPost()
যখন আমি ঠিক করতে পারি তখন আমাকে লাইব্রেরিতে কোনও পদ্ধতি কল করতে হবে $post->is_published = 1
?
কেবলমাত্র শর্তটিই আমি এই কাজটি ভালভাবে দেখছি তা হল যদি আপনি কেবল পরিষেবাগুলি ব্যবহার করেন (এবং আদর্শিকভাবে নিয়ন্ত্রণকারীদের কাছ থেকে কোনও উপায়ে কোনওভাবেই অ্যাক্সেসযোগ্যকে অ্যাক্সেসযোগ্য করে তুলেন)।
শেষ পর্যন্ত মনে হচ্ছে এটি যদি আপনার অনুরোধগুলি সাধারণত আপনার মডেল কাঠামো অনুসরণ করে তবে অতিরিক্ত অযৌক্তিক ফাইলগুলির একগুচ্ছ তৈরি করবে।
ভান্ডারগুলি: আমি যা বুঝতে পারি তা থেকে এটি মূলত একটি সেবার মতো তবে একটি ইন্টারফেস রয়েছে যাতে আপনি ওআরএম এর মধ্যে স্যুইচ করতে পারেন, যা আমার দরকার নেই।
ইভেন্টগুলি: আমি এটিকে এক অর্থে সবচেয়ে মার্জিত সিস্টেম হিসাবে দেখছি কারণ আপনি জানেন যে আপনার মডেল ইভেন্টগুলি সর্বদা স্বতঃস্ফূর্ত পদ্ধতিতে ডাকা হয়, যাতে আপনি নিজের নিয়ন্ত্রককে সাধারণত লিখতে পারেন। আমি দেখতে পাচ্ছি যদিও এগুলি অগোছালো হয়ে উঠছে এবং কারও কাছে যদি সমালোচনামূলক সংযোগের জন্য ইভেন্টগুলি ব্যবহার করে বড় প্রকল্পের উদাহরণ থাকে তবে আমি এটি দেখতে চাই।
মডেল: প্রথাগতভাবে আমার কাছে এমন ক্লাস থাকত যেগুলি CRUD সম্পাদন করেছিল এবং সমালোচনামূলক সংযোগ পরিচালনা করেছিল। এটি আসলে জিনিসগুলিকে সহজ করে দিয়েছে কারণ আপনি CRUD এর চারপাশে সমস্ত কার্যকারিতা জানতেন + এটির সাথে যা কিছু করা উচিত ছিল।
সরল, তবে এমভিসি আর্কিটেকচারে এটি সাধারণত আমি যা দেখি তা হয় না। এক অর্থে যদিও আমি এটি পরিষেবাগুলির চেয়ে বেশি পছন্দ করি যেহেতু এটি সন্ধান করা কিছুটা সহজ, এবং ট্র্যাক রাখতে খুব কম ফাইল রয়েছে। এটি যদিও কিছুটা বিশৃঙ্খল হয়ে উঠতে পারে। আমি এই পদ্ধতির পতনগুলি শুনতে চাই এবং কেন বেশিরভাগ লোকেরা এটি করে বলে মনে হয় না।
প্রতিটি পদ্ধতির সুবিধা / অসুবিধাগুলি কী কী? আমি কিছু অনুপস্থিত করছি?