আপনি কীভাবে পিএইচপি তে alচ্ছিক যুক্তি তৈরি করবেন?


189

পিএইচপি ম্যানুয়ালটিতে optionচ্ছিক পরামিতিগুলির সাথে ফাংশনগুলির জন্য সিনট্যাক্স দেখানোর জন্য, তারা নির্ভরশীল optionচ্ছিক পরামিতিগুলির প্রতিটি সেটের চারপাশে বন্ধনী ব্যবহার করে। উদাহরণস্বরূপ, date()ফাংশনের জন্য, ম্যানুয়ালটি পড়ে:

string date ( string $format [, int $timestamp = time() ] )

An $timestampচ্ছিক প্যারামিটারটি কোথায় এবং ফাঁকা রেখে দিলে এটি time()ফাংশনের রিটার্ন মানের সাথে ডিফল্ট হয়।

পিএইচপি-তে কোনও কাস্টম ফাংশন সংজ্ঞায়িত করার সময় আপনি এই জাতীয় paraচ্ছিক পরামিতিগুলি তৈরি করতে কীভাবে যান?

উত্তর:


253

ম্যানুয়ালটির মতো, =পরামিতিগুলির সংজ্ঞাতে আপনার সমান ( ) চিহ্ন ব্যবহার করুন :

function dosomething($var1, $var2, $var3 = 'somevalue'){
    // Rest of function here...
}

function dosomething($var1, $var2, $optionalValue = null)আমি এই আরও ভাল বিকল্প খুঁজে পেয়েছি।
মোহাম্মদ যায়েদ পাঠান 14 ই

52

আর্গুমেন্টের ডিফল্ট মান অবশ্যই একটি ধ্রুবক প্রকাশ হতে পারে। এটি কোনও চলক বা কোনও ফাংশন কল হতে পারে না।

আপনার যদি এই কার্যকারিতাটির প্রয়োজন হয় তবে:

function foo($foo, $bar = false)
{
    if(!$bar)
    {
        $bar = $foo;
    }
}

ধরে $barনেওয়া অবশ্যই একটি বুলিয়ান হিসাবে প্রত্যাশিত নয়।


1
তবে 0 বা "মিথ্যা" $ বারে পাস করা হলে এটি মূল্যায়ন করবে।
টাইজয়েড

33
নাল অনেক ভাল ডিফল্ট।
Kzqai

3
@ ডুএমএমএসটিআর, এখানে আপনার অর্থ $bar === false- এটি একটি ক্রিয়া যা $barডিফল্ট হয়ে গেলে করা উচিত false। এটি 0পাস করা হলে এটি ভুল পদক্ষেপ এড়াতে পারে , সুতরাং এটি কাজ করে - একটি বুলিয়ান দরকার নেই। কেজকাই যেমন বলেছিলেন, আরও সাধারণ সমাধান ব্যবহার করা হয় $bar = nullকারণ $ বারের মানগুলি বুলিয়ান হলে এটিও ব্যবহার করা যেতে পারে। পরীক্ষা তখন হয় if (is_null($bar))বা if ($bar === null)
টুলমেকারস্টেভ

22

কিছু নোট যা আমি দরকারীও পেয়েছি:

  • আপনার ডিফল্ট মানগুলি ডানদিকে রাখুন।

    function whatever($var1, $var2, $var3="constant", $var4="another")
  • আর্গুমেন্টের ডিফল্ট মান অবশ্যই একটি ধ্রুবক প্রকাশ হতে পারে। এটি কোনও চলক বা কোনও ফাংশন কল হতে পারে না।


14

Alচ্ছিক যুক্তিটিকে একটি ডিফল্ট মান দিন Give

function date ($format, $timestamp='') {
}

10

তারিখ ফাংশনটি এরকম কিছু সংজ্ঞায়িত করা হবে:

function date($format, $timestamp = null)
{
    if ($timestamp === null) {
        $timestamp = time();
    }

    // Format the timestamp according to $format
}

সাধারণত, আপনি ডিফল্ট মানটি এভাবে রাখবেন:

function foo($required, $optional = 42)
{
    // This function can be passed one or more arguments
}

তবে, কেবল আক্ষরিকই বৈধ ডিফল্ট আর্গুমেন্ট, এজন্যই আমি nullপ্রথম উদাহরণে ডিফল্ট যুক্তি হিসাবে ব্যবহার করেছি , না $timestamp = time() এবং এটি একটি নাল চেকের সাথে সংযুক্ত করেছি। লিটারালগুলিতে অ্যারে ( array()বা []), বুলিয়ানস, সংখ্যা, স্ট্রিং এবং null


8

আপনি যদি না জানেন যে কতগুলি অ্যাট্রিবিউটগুলি প্রক্রিয়া করা প্রয়োজন, আপনি ...পিএইচপি 5.6 তে প্রবর্তিত বৈকল্পিক যুক্তি তালিকার টোকেন ব্যবহার করতে পারেন ( সম্পূর্ণ ডকুমেন্টেশন দেখুন এখানে )।

বাক্য গঠন:

function <functionName> ([<type> ]...<$paramName>) {}

উদাহরণ স্বরূপ:

function someVariadricFunc(...$arguments) {
  foreach ($arguments as $arg) {
    // do some stuff with $arg...
  }
}

someVariadricFunc();           // an empty array going to be passed
someVariadricFunc('apple');    // provides a one-element array
someVariadricFunc('apple', 'pear', 'orange', 'banana');

আপনি দেখতে পাচ্ছেন, এই টোকেনটি মূলত সমস্ত প্যারামিটারগুলিকে একটি অ্যারেতে পরিণত করে, যা আপনি নিজের পছন্দ মতো কোনওভাবে প্রক্রিয়া করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.