আমার একটি ফাংশন রয়েছে যা প্যারামিটারগুলির একটি সেট নেয়, তারপরে এসকিউএল কোয়েরিতে শর্ত হিসাবে তাদের জন্য প্রযোজ্য। যাইহোক, আমি শর্তাদি নিজেরা যুক্ত একটি একক যুক্তির অ্যারের পক্ষে ছিলাম:
function searchQuery($params = array()) {
foreach($params as $param => $value) {
switch ($param) {
case 'name':
$query->where('name', $value);
break;
case 'phone':
$query->join('phone');
$query->where('phone', $value);
break;
}
}
}
আমার সহকর্মীর পরিবর্তে সমস্ত যুক্তি সুস্পষ্টভাবে তালিকাভুক্ত করা পছন্দ করেছে:
function searchQuery($name = '', $phone = '') {
if ($name) {
$query->where('name', $value);
}
if ($phone) {
$query->join('phone');
$query->where('phone', $value);
}
}
তাঁর যুক্তিটি ছিল যে যুক্তিগুলি সুস্পষ্টভাবে তালিকাভুক্ত করার মাধ্যমে, ফাংশনটির আচরণ আরও স্পষ্ট হয়ে উঠেছে - রহস্যজনক যুক্তিটি কী $param
ছিল তা খুঁজে বের করার জন্য কোডটি বের করে দেওয়ার বিপরীতে ।
আমার সমস্যাটি হ'ল 10+ এর মতো প্রচুর আর্গুমেন্টের সাথে ডিল করার সময় এটি খুব ভার্জোজ হয়। কোন পছন্দসই অনুশীলন আছে? আমার নিকৃষ্টতম পরিস্থিতিটি নীচের মতো কিছু দেখতে পাবে:
searchQuery('', '', '', '', '', '', '', '', '', '', '', '', 'search_query')
foreach
এই উদাহরণে অপ্রয়োজনীয়, আপনি এর if(!empty($params['name']))
পরিবর্তে foreach
এবং ব্যবহার করতে পারেন switch
।
!empty($params['name'])
প্যারামিটারগুলির জন্য পরীক্ষা করার জন্য অন্ধভাবে ব্যবহার করবেন না - উদাহরণস্বরূপ, স্ট্রিং "0" খালি থাকবে। array_key_exists
চাবিটি পরীক্ষা করার জন্য, বা isset
যদি আপনার যত্ন নেই তবে এটি ব্যবহার করা ভাল null
।