2017-07-24 10 views
6

मैं एक वर्डप्रेस पाठ्यपुस्तक जहां मैं निम्नलिखित समारोह के लिए एक त्वरित वर्णन पाया में पढ़ रहा था:जब PHP पूर्णांक के लिए पूछता है तो PHP फ़ंक्शंस बूलियन तर्क स्वीकार क्यों कर सकता है?

function is_super_admin($user_id = false) {... 

इस समारोह निर्धारित करता है कि उपयोगकर्ता एक साइट व्यवस्थापक है।

हालांकि, मेरा प्रश्न यह है कि PHP पैरामीटर के साथ कैसे व्यवहार करता है।

उपरोक्त फ़ंक्शन को एक पूर्णांक पैरामीटर प्राप्त होता है, और यदि आप इसे कुछ भी पास नहीं करते हैं तो यह FALSE का डिफ़ॉल्ट मान असाइन करेगा।

FALSE एक BOOLEAN डेटा प्रकार है, और इस समारोह एक INTEGER डेटा प्रकार को स्वीकार करना चाहिए:

यहाँ मेरी सवाल है।

तो हमें बुलियन मूल्य प्रदान करने की अनुमति कैसे दी जा सकती है, जब हमें एक पूर्णांक मूल्य प्रदान करना चाहिए?

+1

आप कहीं भी घोषित नहीं कर रहे हैं कि पैरामीटर एक 'int' है, क्यों * यह * काम नहीं करना चाहिए? – deceze

+0

PHP गतिशील रूप से टाइप किया गया है। आप विभिन्न प्रकार के तर्कों को पारित कर सकते हैं, जब तक कि विशेष रूप से टाइप-इशारा नहीं किया जाता है। इस विशेष मामले में, आप मूल रूप से कुछ भी पारित कर सकते हैं। – Mjh

+0

PHP में [टाइप juggling] (http://php.net/manual/en/language.types.type-juggling.php) के बारे में और पढ़ें। – axiac

उत्तर

9

PHP 7 ने स्केलर प्रकार की घोषणाएं पेश कीं।

वे दो स्वादों में आते हैं: जबरदस्त (डिफ़ॉल्ट) और सख्त। पैरामीटर के लिए निम्नलिखित प्रकार अब लागू किए जा सकते हैं (या तो coercively या कड़ाई से): तार (स्ट्रिंग), पूर्णांक (int), फ्लोटिंग-पॉइंट नंबर (फ्लोट), और बूलियन (बूल)। वे PHP 5: कक्षा के नाम, इंटरफेस, सरणी और कॉल करने योग्य में पेश किए गए अन्य प्रकारों को बढ़ाते हैं।

निम्न पंक्ति

function is_super_admin($user_id = false) { . . . . 

परमाटर के प्रकार निर्दिष्ट नहीं है। यदि यह इसके बजाय था:

function is_super_admin(int $user_id = false) { . . . . 

तो यह एक त्रुटि उत्पन्न करेगा।

मैं इसे गलत पर अनुमान लगा रहा हूं क्योंकि एक साधारण if का उपयोग करके वैध मान की जांच करना आसान है क्योंकि दोनों झूठे और/या int के बराबर 0 के बराबर हैं।

PHP 7 नई सुविधाओं here पर अधिक।

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