2012-06-11 24 views
12

php में हम इतनापीएचपी डिफ़ॉल्ट तर्क समारोह कॉल

function func_name(arg1,arg2=4,etc...) { 

की तरह, लेकिन मेरी समझ के लिए एक समारोह के लिए डिफ़ॉल्ट तर्क पारित कर सकते हैं हम एक समारोह कॉल पारित नहीं हो सकता तो यह गैर कानूनी है:

function func2_name(arg1,arg2=time(),etc...) { 

इसलिए जब मैं एक फ़ंक्शन वैल्यू करना चाहता हूं (कल्पना करें कि समय फ़ंक्शन को रनटाइम से पहले ज्ञात नहीं किया जा सकता है) मुझे इस तरह के आसपास एक प्रकार का गन्दा काम करना है:

function func3_name(arg1,arg2=null,etc...) { 
    if(arg2==null) arg2 = time(); 

मैं सोच रहा था कि क्या कोई बेहतर तरीका जानता है, फ़ंक्शन कॉल मानों को PHP में डिफ़ॉल्ट तर्क के रूप में पास करने का एक क्लीनर तरीका है? धन्यवाद।

PHP भाषा डिज़ाइन में कोई मौलिक कारण भी है कि यह फ़ंक्शन कॉल को डिफ़ॉल्ट तर्क के रूप में अनुमति नहीं देता है (जैसे यह प्रीप्रोकैसिंग में कुछ खास करता है?) या यह भविष्य के संस्करणों में एक विशेषता बन सकता है?

+2

यह मेरे लिए गन्दा प्रतीत नहीं होता है। – Josh

+1

विकल्पों के लिए [इस तरह के सवाल] (http://stackoverflow.com/questions/8740687/php-function-as-parameter-default) पर एक नज़र डालें। – Quantastical

उत्तर

13

अच्छा, संक्षिप्त उत्तर यह है कि मेरे ज्ञान के लिए ऐसा करने का कोई बेहतर तरीका नहीं है। हालांकि, आप इसे टर्नरी ऑपरेटरों का उपयोग करके कुछ हद तक साफ कर सकते हैं।

function func3_name(arg1,arg2=null,etc...) { 
    arg2 = (arg2==null ? time() : arg2); 
} 
+2

मुझे लगता है कि आप arg2 = (arg2 == null) का मतलब है? समय(): arg2; –

2

कॉनर 100% सही है; हालांकि, PHP 7 के रूप में, अब आप null coalesce operator का उपयोग कर सकते हैं।

अर्थात

$arg2 = $arg2 ?? time(); 

बस एक छोटी, यकीनन क्लीनर, जिस तरह से यह लिखने के लिए।

संबंधित मुद्दे