2010-08-30 17 views
5

मैं सिर्फ उत्सुक हूँ। PHP में, echo फ़ंक्शन के रूप में लागू क्यों नहीं किया गया था? PHP ने हमें printf क्यों नहीं दिया और कभी भी echo नहीं बताया? कृपया ध्यान दें कि:PHP में, फ़ंक्शन के रूप में लागू क्यों नहीं किया गया था? (गूंज बनाम printf नहीं)

  • यह echo बनाम printf के बारे में कोई सवाल नहीं है।
  • मुझे पहले से ही पता था कि echo एक भाषा निर्माण है।

अद्यतन: वैसे, printfecho का उपयोग करके लागू किया गया था?

+1

ऐसा क्यों लगता है कि अधिकांश लोग इसका जवाब देने या लॉक करने का प्रयास कर रहे हैं, इस सवाल को पूरी तरह से पढ़ा नहीं है? –

+2

* (स्रोत कोड) * [formatted_print.c का HEAD संशोधन] (http://svn.php.net/viewvc/php/php-src/trunk/ext/standard/formatted_print.c?view=markup) – Gordon

उत्तर

0

इको एक भाषा निर्माण है। कार्य का उपयोग भाषा उनके काम करने के लिए निर्माण करते हैं। की व्याख्या वास्तव में मेरी विशेषता नहीं है, लेकिन एक गूगल कार्रवाई मुझे इस विषय के लिए लाया:

What is the difference between a language construct and a "built-in" function in PHP?

कुछ महत्वपूर्ण सामग्री:

...

इसी कारण आपको की जड़ है गूंज या प्रिंट जैसी भाषा संरचनाओं को फिर से परिभाषित नहीं कर सकते: वे प्रभावी रूप से पार्सर में हार्डकोड किए जाते हैं, जबकि फ़ंक्शन को भाषा संरचनाओं के सेट में मैप किया जाता है और पार्सर आपको 012 पर उस मैपिंग को बदलने की अनुमति देता हैसंकलन- या रनटाइम भाषा संरचनाओं या अभिव्यक्तियों के अपने सेट को प्रतिस्थापित करने के लिए।

...

+0

धन्यवाद। मैंने पहले पढ़ा है। लेकिन मैं सिर्फ उत्सुक हूं कि क्यों PHP टीम ने 'इको' का खुलासा किया, एक भाषा निर्माण जिसे मैं शायद ही कभी किसी प्रोग्राम में लपेटने की बजाय अन्य प्रोग्रामिंग भाषा में देखता हूं (आईआईआरसी, पायथन ने संस्करण 3 में कार्य करने के लिए 'प्रिंट' बदल दिया)। –

+2

@ है मिन्ह गुयेन: ठीक है, मुझे नहीं लगता कि रasmस लेरडोर्फ़, ज़ीव सुरस्की, या एंडी गुटमैन यहां SO पर हैं। मुझे लगता है कि PHP के प्रारंभिक निर्माता के रूप में, केवल वे इस व्यवहार के लिए * कारण * के लिए एक संतोषजनक उत्तर दे सकते हैं। (वे शायद एक था, लेकिन यह हमारे समय के मिस्ट में छिपा हुआ है, केवल प्राणियों;)) – Piskvor

1

इको एक समारोह नहीं है और यह प्रिंट की तरह एक मूल्य वापस नहीं करता है। प्रिंट एक भाषा निर्माण भी है - कोष्ठक की आवश्यकता नहीं है।

मैनुअल: गूंज - कोई मूल्य वापस नहीं किया जाता है। प्रिंट - हमेशा 1 देता है।

तथ्य है कि एक मूल्य के लौटने प्रणाली के प्रदर्शन गिरावट होती है।

तो .. अब से printf एक फ़ंक्शन है (जो आउटपुट स्ट्रिंग की लंबाई देता है) जिसका उत्तर मुझे विश्वास है।

+0

इसके अलावा आप भी उपयोग कर सकते हैं: echo $ var1, $ var2, $ var3; यह concatenation से बचाता है। –

-1

बस एक जंगली अनुमान है, लेकिन क्योंकि पीएचपी सीजीआई binaries के रूप में मौजूद थे शायद यह है। तो यह बंदरगाह खोल स्क्रिप्ट को आसान बनाने के लिए होगा, क्योंकि आप उन में गूंज बाइनरी का उपयोग कर सकते हैं।