উপরে উল্লিখিত হিসাবে, আপনি পরামিতিগুলি এড়াতে সক্ষম হবেন না। আমি কিছু উত্তর সরবরাহ করার জন্য এই উত্তরটি লিখেছি, যা একটি মন্তব্যে রাখার পক্ষে খুব বড় ছিল।
@ ফ্র্যাঙ্ক নোক ফাংশনটিকে তার ডিফল্ট পরামিতিগুলির সাথে কল করার প্রস্তাব দেয়, যেমন উদাহরণস্বরূপ
function a($b=0, $c=NULL, $d=''){
আপনার ব্যবহার করা উচিত
$var = a(0, NULL, 'ddd');
যা কার্যত প্রথম দুটি ( $b
এবং $c
) পরামিতি বাদ দেওয়ার মতোই হবে ।
কোনটি ডিফল্ট (এটি 0
ডিফল্ট মান সরবরাহ করতে টাইপ করা হয়, বা এটি গুরুত্বপূর্ণ?) এটি পরিষ্কার নয় ।
ডিফল্ট মানগুলির সমস্যাটি বাহ্যিক (বা অন্তর্নির্মিত) ফাংশনের সাথে সংযুক্ত থাকে এমন একটি বিপদও রয়েছে যখন ডিফল্ট মানগুলি ফাংশন (বা পদ্ধতি) লেখক দ্বারা পরিবর্তন করা যেতে পারে। সুতরাং আপনি যদি প্রোগ্রামটিতে আপনার কলটি পরিবর্তন না করেন তবে আপনি অজান্তেই এর আচরণ পরিবর্তন করতে পারেন।
কিছু বৈকল্পিক কিছু গ্লোবাল ধ্রুবককে সংজ্ঞায়িত করতে পারে, যেমন DEFAULT_A_B
"ফাংশন এ এর বি প্যারামিটারের ডিফল্ট মান" এবং "বাদ দেওয়া" পরামিতিটি এভাবে হবে:
$var = a(DEFAULT_A_B, DEFAULT_A_C, 'ddd');
শ্রেণীর জন্য এটি ক্লাসের ধ্রুবকগুলি সংজ্ঞায়িত করা সহজ এবং আরও মার্জিত, কারণ তারা বিশ্বব্যাপী সুযোগের অংশ, যেমন।
class MyObjectClass {
const DEFAULT_A_B = 0;
function a($b = self::DEFAULT_A_B){
}
}
$obj = new MyObjectClass();
$var = $obj->a(MyObjectClass::DEFAULT_A_B);
নোট করুন যে এই ডিফল্ট ধ্রুবকটি পুরো কোড জুড়ে একবারে সংজ্ঞায়িত হয় (এমনকি পদ্ধতি ঘোষণায় কোনও মূল্য নেই), সুতরাং কিছু অপ্রত্যাশিত পরিবর্তনগুলির ক্ষেত্রে আপনি সর্বদা সঠিক ডিফল্ট মান সহ ফাংশন / পদ্ধতি সরবরাহ করবেন।
এই সমাধান স্বচ্ছতার কাঁচা ডিফল্ট মান (যেমন সরবরাহের চেয়ে ভাল অবশ্যই হয় NULL
, 0
ইত্যাদি) যা পাঠক কিছুই বলছে না।
(আমি সম্মতি জানাই যে পছন্দ করা পছন্দ $var = a(,,'ddd');
করা সর্বোত্তম বিকল্প হবে)