2009-02-10 35 views
11

मुझे अपने PHP स्क्रिप्ट में <? के बजाय <?php का उपयोग क्यों करना चाहिए?<? के बजाय php <?

+0

यह अनिवार्य रूप से http://stackoverflow.com/questions/436688/difference-between-php-echo-sessionid-and-sessionid –

+0

का एक डुप्ली वास्तव में नहीं है; यह प्रश्न शॉर्टटैग (परिवर्तनीय सामग्री को प्रतिबिंबित करने का एक त्वरित तरीका) के बारे में है, wheareas यह विभिन्न टैग सम्मेलनों के बारे में है। –

+0

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

उत्तर

29

दो मुख्य कारण कम खुलने वाला टैग से बचने के लिए कर रहे हैं

  1. अधिकतम पोर्टेबिलिटी - <?php हर पीएचपी सक्षम सर्वर पर काम करेंगे, लेकिन <? निष्क्रिय किया जा सकता
  2. यह का उद्घाटन करने के समान है एक्सएमएल प्रस्तावना - का कारण बन सकता पार्स या निष्पादन सिरदर्द
+1

एक्सएमएल तर्क में नहीं गिना जाता (http: //hsivonen.iki। फाई/उत्पादन-xml /)। एक्सएमएल तर्क एसक्यूएल तार से बचने के लिए एक गैर मानक रास्ते पर निर्णय लेने के रूप में एक ही श्रेणी में है। पीएचपी टीम एक बड़ा गलती की है और गलती से इस छोटे से टैग सुविधा को मार डाला। – stesch

+1

कोई भी सर्वर व्यवस्थापक जो अक्षम करता है

+3

जैस्पर, कृपया शूटिंग लोगों की वकालत न करें जब तक कि आप आंखों में लक्ष्य देखने को तैयार न हों और ट्रिगर को स्वयं खींचें। –

3

दोनों अर्थात् समान हैं। <? पूर्ण वाक्यविन्यास के लिए बस एक शॉर्टकट है।

+0

जेएसपी – Vinze

+0

निक में बिल्कुल वही काम करता है। मैंने जो कोड दिखाया वह एएसपी.नेट एमवीसी के लिए था और बस –

+0

था लेकिन यह एक गलत सादृश्य था। PHP एक उपयोगिता टैग प्रदान करता है जैसे ASP.Net करता है, लेकिन यह nickohrn

1

यह ध्यान दिया जाना चाहिए कि PHP की कुछ सर्वर कॉन्फ़िगरेशन बॉक्स में से एक या दूसरे का समर्थन नहीं करते हैं। उदाहरण के लिए, मेरा वेब सर्वर < का समर्थन नहीं करता है? लेकिन करता है समर्थन <? php

+1

यह तकनीकी रूप से सही नहीं है - सभी php प्रतिष्ठानों सामान्य (लंबी) खुलने वाले टैग का समर्थन है, जबकि कम खुलने वाला टैग कर सकते हैं अक्षम रहें कहने के लिए "कुछ एक या दूसरे का समर्थन नहीं करते हैं" वास्तव में गलत है। –

7

वहाँ पीएचपी शुरू करने के लिए

<?php 

और

<? 

पीएचपी भी शामिल

<?= 

लेकिन उस के पीछे चर बाहर प्रिंट होगा दो तरीके हैं यह, क्योंकि यह गूंज के लिए एक लघुरूप है।

आपको <? Php का उपयोग सभी सर्वर प्रकारों के साथ संगत होने के बाद करना चाहिए। आप अपने कोड को एक नए होस्टिंग समाधान में ले जा सकते हैं या एक नया सर्वर डिफ़ॉल्ट सेट कर सकते हैं और shorthands अक्षम किया जा सकता है।

5

लघु टैग <? (और <?=) अक्षम किया जा सकता है। लंबे संस्करण <?php (और <?= = <?php echo) हर जगह काम करते हैं।

हम ऐसी चीज को कॉन्फ़िगर करने योग्य बनाने के लिए PHP टीम के इस निर्णय की भावना पर चर्चा कर सकते हैं, लेकिन सार यह है कि आप पोर्टेबल कोड में छोटे टैग का उपयोग नहीं कर सकते हैं।

+0

पृथ्वी पर क्यों कोई भी लघु टैग अक्षम करेगा? –

+0

@ ओरियन एडवर्ड्स: यह एक कॉन्फ़िगरेशन विकल्प है। php.ini पोर्टेबल कोड लिखना वाकई मुश्किल बनाता है। आवश्यक से अधिक कठिन है। यदि यह एक विकल्प है, तो यह पोर्टेबल कोड के लिए वर्जित है। :-( – stesch

0

Wordpress Coding Standards का कहना है कि केवल <?php का उपयोग करें। वे क्यों नहीं समझाते हैं।

यह एक धार्मिक सवाल हो सकता है।

+0

मुझे नहीं लगता कि जब मैं इस जवाब दिया स्टैक ओवरफ़्लो टिप्पणी की थी। –

3

मैं व्यक्तिगत रूप से <? पसंद करते हैं दो कारणों

  1. पीएचपी कई बड़े पीएचपी परियोजना भर में मानक कोडिंग की सलाह देते हैं यह बंद किया जा करने के लिए
  2. समस्याएं पैदा करता है, तो आप XML डॉक्स पैदा कर रहे हैं (xml डॉक्स शुरू के लिए बंद किया जा करने के लिए <?xml version="1.0" encoding="UTF-8" ?> के साथ)
  3. (बोनस) <?php<? से अधिक पठनीय और प्रमुख रूप से दिखाई देता है।
+1

# 3 एक MISfeature है। मैं PHP से बाहर निकलना चाहते हैं मेरी लानत तरह से, नहीं ही प्रमुखता से सामने प्रस्तुत करें –

+0

आपका बिंदु 2 आप एक बोजो बनाता है:। http://hsivonen.iki.fi/producing-xml/ – stesch

0

संक्षिप्त रूप <?/<?= वाक्य रचना के समर्थन short_open_tag parameter in php.ini पर आधारित है। यदि आप अपना कोडबेस होस्ट करते हैं, तो यह सक्षम करने के लिए छोटा है।हालांकि, साझा/प्रबंधित वेब होस्ट पर, आपके पास इस सेटिंग पर नियंत्रण नहीं हो सकता है।

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

2

प्रत्येक के स्पष्टीकरण में जोड़ने के लिए कि छोटे टैग का उपयोग नहीं किया जाना चाहिए क्योंकि उन्हें अक्षम किया जा सकता है (या शायद भविष्य के PHP संस्करणों से भी हटाया जा सकता है), छोटे टैग को बहिष्कृत करने के लिए मुख्य तर्क यह है कि वे वैध XML नहीं हैं "प्रोसेसिंग निर्देश "जबकि <?php टैग हैं। तो <?php ... ?> टैग वाले PHP टेम्पलेट्स वैध XML दस्तावेज़ हो सकते हैं जबकि छोटे टैग का उपयोग करने वाले लोग नहीं हैं।

1

पोर्टेबिलिटी तर्क सब अच्छी तरह से और अच्छे हैं, लेकिन मैं पवित्र वस्तु दूषक जा रहा हूँ और कहते हैं कि आप आगे जाना है और कम टैग का उपयोग करता है, तो आप, करना चाहते हैं जब तक आप कर रहे हैं चाहिए कुछ ऐसा करना जो वास्तव में व्यापक वितरण (स्रोत का) है, या कुछ बहुत ही एक्सएमएल केंद्रित कर रहा है।

ए) मैं ऐसी परिस्थिति में कभी नहीं रहा हूं जहां मैं लघु टैग सक्षम नहीं कर सका। आमतौर पर वे डिफ़ॉल्ट रूप से चालू होते हैं।

बी) अधिकांश स्थितियों में, <?<?xml के साथ उलझन में नहीं जा रहा है क्योंकि उन्हें ढेर के विभिन्न स्तरों पर पार्स किया जा रहा है।

ग) लघु टैग कम निकला हुआ है और इसलिए clutters अपने कोड में कम है। मुझे यह विशेष रूप से <?php echo बनाम <?= के साथ सच लगता है। (आप तर्क दे सकते हैं कि आपको आम तौर पर उनमें से किसी एक का उपयोग करने से बचना चाहिए, क्योंकि इसका मतलब है कि आप स्पेगेटी कोड लिख रहे हैं, लेकिन चलो - यह php है!)

बेशक, यह सब किस प्रकार के पर निर्भर करता है जिस परियोजना पर आप काम कर रहे हैं, लेकिन मूल वेबसाइट के लिए, मुझे नहीं लगता कि शॉर्ट टैग आपको चोट पहुंचाने की संभावना है।

+0

फिर भी भविष्य में PHP छोटे टैग सक्षम नहीं होंगे और आपका सभी कोड अगली बड़ी रिलीज के साथ टूट जाएगा। –

+0

क्या यह सच है? क्या इसके लिए कोई आधिकारिक स्रोत है? – sprugman

+0

php.net पर, मुझे लंबे टैग का उपयोग करने की सिफारिश दिखाई देती है, जो ठीक है, लेकिन मुझे जाने वाले छोटे टैग के बारे में कुछ भी अधिकारी नहीं दिख रहा है। – sprugman

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