PHP के मामले में कार्य और तरीके असंवेदनशील क्यों हैं?


107

PHP में फ़ंक्शंस और तरीके केस-असंवेदनशील हैं, जैसा कि निम्नलिखित उदाहरण में चित्रित किया गया है।

function ag()
{
    echo '2';
}

Ag();
class test {
    function clMe()
    {
        echo 'hi';
    }
}

$instance = new test;
$instance->clme();

लेकिन चर के साथ ऐसा नहीं है। औचित्य क्या है?


161
PHP को किसी भी प्रकार की बदबू की ज़रूरत नहीं है!
मैक्स श्वाबकेह

2
"क्योंकि सूप आदमी ऐसा कहता है।" कोई औचित्य नहीं है, लेकिन संदर्भ: php.net/manual/en/functions.user-defined.php (उदाहरण 3 और 4 के बीच), php.net/manual/en/language.variables.bariics.bp.php
outis

2
class Share{ share($str){ echo $str; } } $sh = new Share(); $sh->share("string");फंक्शन शेयर ($ str) को देखने के लिए आप दो कॉल देख सकते हैं। पहला कारण कॉटॉर का और दूसरा स्पष्ट कारणों के लिए!
विवेक।

1
@outis, "सूप मैन" से आपका क्या तात्पर्य है?
पचेरियर

1
@outis, आप सीनफील्ड से "सूप नाजी" का उल्लेख कर रहे हैं। YouTube , विकिपीडिया
केविन ट्रास

जवाबों:


98

मुझे साक्षात्कार से उद्धृत करते हैं - PHP के निर्माता, रासमस लेरडोर्फ

PHP का पहला संस्करण टूल का एक सरल सेट था जिसे मैंने अपनी वेबसाइट के लिए और कुछ प्रोजेक्ट्स के लिए एक साथ रखा था। एक उपकरण ने mSQL डेटाबेस में कुछ फैंसी हिट लॉगिंग की, दूसरे ने फॉर्म डेटा दुभाषिया के रूप में काम किया। इससे पहले कि मैं इसके बारे में बीमार हो गया, मैंने सी में लिखे लगभग 30 विभिन्न छोटे सीजीआई कार्यक्रमों को समाप्त कर दिया और उन सभी को एक एकल सी लाइब्रेरी में मिला दिया। मैंने तब एक बहुत ही साधारण पार्सर लिखा था जो HTML फ़ाइलों में से टैग निकालता था और उन्हें C लाइब्रेरी में संबंधित कार्यों के आउटपुट से बदल देता था।

साधारण पार्सर धीरे-धीरे सशर्त टैग, फिर लूप टैग, फ़ंक्शंस आदि को शामिल करने के लिए बढ़ा, किसी भी बिंदु पर मुझे नहीं लगा कि मैं एक स्क्रिप्टिंग भाषा लिख ​​रहा था। मैं बस मैक्रो रिप्लेसमेंट पार्सर में थोड़ी कार्यक्षमता जोड़ रहा था। मैं अभी भी सी में अपने सभी वास्तविक व्यावसायिक तर्क लिख रहा था।

मैंने कहीं पढ़ा है कि चूंकि सभी फ़ंक्शन अनिवार्य रूप से HTML दस्तावेज़ में टैग की तरह महसूस किए जाते हैं और चूंकि HTML टैग केस असंवेदनशील थे, इसलिए उन्होंने मामले को असंवेदनशील होने के लिए PHP में फ़ंक्शन नाम चुना। बाद में यह सुविधा भाषा में बनी रही।


66
मुझे पेरिस में एक PHP सम्मेलन में रैसमस के एक उद्धरण को भी कम या ज्यादा कहते हुए याद आता है: "सख्त कोडिंग नियमों या मानकों का पालन करने के मामले में मैं निश्चित रूप से एक अच्छा प्रोग्रामर नहीं हूं, लेकिन मैं कह सकता हूं कि यदि आप केस संवेदनशीलता पर भरोसा करते हैं एक फ़ंक्शन नाम को दूसरे से पहचानें, आप एक तरह की गंभीर समस्या में हैं! "
टॉम डेसप

1
क्या यह अभी भी भविष्य में असंवेदनशील है?
वीन

4
यही कारण है कि php प्रोग्रामर जब अपने कार्यों का नामकरण करते हैं तो ऊंट की जगह अंडरस्कोर का उपयोग करते हैं।
पेपरस्ट्रीट 7

2
@ paperstreet7 कुछ करते हैं। अच्छे लोग नहीं करते। कम से कम, अब और नहीं।
डैन

13
@dan, बहुत सारे "अच्छे" प्रोग्रामर अंडरस्कोर का उपयोग करते हैं। वास्तव में, PSR-0 जानबूझकर सिफारिश नहीं करता है। एक अच्छा प्रोग्रामर अंडरस्कोर या कैमलकेस चुनता है और उस कन्वेंशन से चिपक जाता है। यह चुनाव करना कि कोई अच्छा प्रोग्रामर है या नहीं, यह मूर्खतापूर्ण है।
jdp 20

34

हां, फ़ंक्शन और तरीके नाम केस-संवेदी नहीं हैं।

और हाँ, चर नाम केस-संवेदी होते हैं।

मुझे यकीन नहीं है कि इसके लिए एक कारण है - सिवाय इसके कि यह एक लंबे समय के लिए रहा है, और, इसलिए, बैकवर्ड संगतता कारणों के लिए मामला बना हुआ है।



एक संदर्भ के रूप में, मैनुअल के विभिन्न पृष्ठों के लिंक / उद्धरण के एक जोड़े:

कार्यों के लिए ( उद्धृत ) :

नोट: फ़ंक्शन नाम केस-असंवेदनशील होते हैं, हालांकि यह आमतौर पर फ़ंक्शन को कॉल करने के लिए अच्छा रूप है क्योंकि वे अपनी घोषणा में दिखाई देते हैं।

और तरीके वस्तुओं में कार्यों से बहुत अधिक नहीं हैं - खासकर जब हम PHP 4 और पिछड़े-संगतता के बारे में सोचते हैं।


और, चर ( उद्धृत ) के लिए:

PHP में चर चर के नाम के बाद एक डॉलर चिह्न द्वारा दर्शाए जाते हैं। चर नाम केस-संवेदी है।

और ऑब्जेक्ट गुण ऑब्जेक्ट्स में चर से अधिक नहीं हैं - PHP 4 और पिछड़े-संगतता के बारे में एक ही टिप्पणी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.