2012-05-03 9 views
16

मैं कोड के कई स्निपेट के माध्यम से देख रहा था, और मैं ने पाया है कि लोगों को एक if बयान में निम्नलिखित दो तरीकों का उपयोग कर सकते हैं:PHP में घुंघराले ब्रेसिज़ या कोलन-एंडिफ़ स्टेटमेंट - कौन सा बेहतर प्रदर्शन और कोड संगतता प्रदान करता है?

विधि 1:

<?php 
    if ($condition) { 
    // Do this 
    } 
?> 

विधि 2:

<?php 
    if ($condition): 
    // Do this 
    endif; 
?> 

तो कौन सी विधि PHP कंपाइलर्स और PHP के साथ संस्करणों के साथ अधिक संगत है, या दोनों के बीच कोई स्पष्ट अंतर नहीं है?

+3

एक सिक्का फ्लिप करें, इसकी व्यक्तिगत पसंद –

+3

मुझे # 1 अधिक आसान लगता है क्योंकि यह जावास्क्रिप्ट सिंटैक्स के करीब है और मैं आमतौर पर 2. – Gerard

+0

मिश्रण कर रहा हूं, मैं अपने कोडिंग में दोनों का उपयोग करता हूं, और इससे मुझे कोई परेशानी नहीं होती है, चूंकि मैं अपने कोड को प्रभावी ढंग से इंडेंट करता हूं, जिससे मुझे अपने कोड में डिवीजन देखने की इजाजत मिलती है। –

उत्तर

20

अधिकांश समय वैकल्पिक (एंडिफ़) वाक्यविन्यास दृश्य स्क्रिप्ट में उपयोग किया जाता है। किसी कथन के अंत को देखना/नोटिस करना अक्सर मुश्किल होता है क्योंकि घुंघराले ब्रेस केवल एक वर्ण लेता है, जब आप किसी फ़ाइल के निचले भाग में होते हैं, तो यह कहना मुश्किल होता है कि यह एक if या foreach का अंत है या नहीं। उदाहरण के लिए:

<?php if ($condition): ?> 

    <div>a huge block of html</div> 

<?php endif; ?> 
+7

जबकि मैं किसी के लिए दस्तक नहीं दे रहा हूं एक पूर्ण आईडीई होने के कारण, निश्चित रूप से कई संपादक हैं जो बिना किसी कीमत पर कोड फोल्डिंग (और ब्लॉक पहचान) का समर्थन करते हैं। –

+1

यदि आपका फ़ंक्शन इतना लंबा है कि आप एक उद्घाटन के साथ एक अंतिम ब्रेस को संबद्ध नहीं कर सकते हैं, तो ब्रेसिज़ बनाम alt वाक्यविन्यास आपकी समस्याओं का कम से कम है। –

4

यह alternative syntax, शायद, अधिक परिचित वाक्यविन्यास से अलग नहीं है। बस दो मिश्रण मत करो। while, for, foreach, और switch के लिए समान वाक्यविन्यास मौजूद है।

आमतौर पर आपको पठनीयता, और आपकी टीम की वरीयता के आधार पर अपना पसंदीदा वाक्यविन्यास चुनना चाहिए।

क्या वास्तव में आप फेंक सकती है जब आप जो निम्नलिखित की तरह तार्किक संयोजन के रूप ऑपरेटरों का दुरुपयोग "बयान करता है, तो" देखना शुरू:

isset($value) AND print($value); 
6

वे दोनों बिल्कुल बराबर हैं। यह निर्धारित करने के लिए कि आपको किस का उपयोग करना चाहिए, अपने संगठन की स्टाइल गाइड से परामर्श लें।

+0

हां, लेकिन मुझे ऐसा लगता है कि कोई कम संगत या कम तेज़ हो सकता है। जाहिर है, मैं गलत हो सकता है। – think123

+5

यदि आप PHP का संस्करण चला रहे हैं जो "वैकल्पिक" वाक्यविन्यास का समर्थन नहीं करता है तो आपके कोड को बदलने के बजाय ** ** बड़ी समस्याएं ** हैं ... –

0

मैं अब तक देखा है के रूप में, मेरे एप्लिकेशन में, उन दोनों के बीच कोई अंतर नहीं है, लेकिन आप समस्या का एक बहुत हो सकता है अगर आप, क्योंकि यह संभव है एक नियम के बिना उन्हें mixt करेंगे कुछ त्रुटियां प्राप्त करें और आप घुंघराले खोज लेंगे लेकिन आपने घुंघराले का उपयोग नहीं किया है। एक वाक्यविन्यास का उपयोग विशेष रूप से करें।

+0

एक उत्तर के लिए पर्याप्त नहीं है। हालांकि एक टिप्पणी के लिए बेहतर है –

0

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

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