PHP छोटे टैग उपयोग करने के लिए स्वीकार्य हैं?




हिंदी में html तत्वों (20)

नोट: PHP 5.4 में छोटा टैग, <?= , अब हमेशा उपलब्ध है।

आधिकारिक दस्तावेज़ीकरण के अनुसार जानकारी यहां दी गई है:

खोलने और बंद करने वाले टैग के चार अलग-अलग जोड़े हैं जिन्हें PHP में उपयोग किया जा सकता है। उनमें से दो, <?php ?> और <script language="php"> </script> , हमेशा उपलब्ध हैं। अन्य दो छोटे टैग और एएसपी शैली टैग हैं, और php.ini कॉन्फ़िगरेशन फ़ाइल से चालू और बंद किया जा सकता है। ऐसे में, जबकि कुछ लोगों को लघु टैग और एएसपी शैली टैग सुविधाजनक लगता है, वे कम पोर्टेबल होते हैं, और आम तौर पर अनुशंसित नहीं होते हैं

मेरे अनुभव में अधिकांश सर्वरों में छोटे टैग सक्षम होते हैं। टाइपिंग

<?=

टाइपिंग से कहीं ज्यादा सुविधाजनक है

<?php echo 

प्रोग्रामर सुविधा एक महत्वपूर्ण कारक है, तो उनकी सिफारिश क्यों नहीं की जाती है?


मैं बहुत पसंद करता हूं <?=$whatever?> इसे जाने के लिए। इसके साथ कभी समस्या नहीं हुई। जब तक यह मुझे गधे में काटता है तब तक मैं इंतजार करूंगा। सभी गंभीरता में, 85% (मेरे) ग्राहकों के पास दुर्लभ अवसर पर php.ini तक पहुंच है। अन्य 15% मुख्यधारा के होस्टिंग प्रदाताओं का उपयोग करते हैं, और लगभग सभी ने उन्हें सक्षम किया है। मुझे प्यार है


यदि कोई भी इस पर ध्यान दे रहा है ... PHP 5.4.0 अल्फा 1 <?= हमेशा उपलब्ध है:

http://php.net/releases/NEWS_5_4_0_alpha1.txt

तो ऐसा लगता है कि छोटे टैग (ए) स्वीकार्य हैं और (बी) यहां रहने के लिए। कम से कम अब के लिए ...


एक को यह पूछना है कि छोटे टैग का उपयोग करने का क्या मतलब है।

टाइप करने के लिए जल्दी

एमडीकोर ने कहा:

<?= टाइपिंग <?php echo टाइप करने से कहीं अधिक सुविधाजनक है

हाँ यही है। आप अपनी स्क्रिप्ट में 7 वर्ण * एक्स बार टाइप करने के लिए सहेजते हैं।

हालांकि, जब एक स्क्रिप्ट को डिजाइन, विकास और लिखने के लिए एक घंटे, या 10 घंटे या उससे अधिक समय लगता है, तो स्क्रिप्ट की अवधि के लिए उन 7 वर्णों को टाइप करने के कुछ सेकंड कितने प्रासंगिक हैं?

कुछ कोर, या सभी के लिए संभावित की तुलना में, स्क्रिप्ट्स चालू नहीं होने पर स्क्रिप्ट काम नहीं कर रही हैं, या एक अद्यतन पर हैं या इनआई फ़ाइल / सर्वर कॉन्फ़िगरेशन बदलने वाले किसी व्यक्ति ने उन्हें काम करने, अन्य संभावनाओं को रोक दिया है।

आपके द्वारा प्राप्त होने वाले छोटे लाभ संभावित समस्याओं की गंभीरता से अधिक नहीं होते हैं, यह आपकी साइट काम नहीं कर रही है, या बदतर है, केवल इसके कुछ हिस्सों में काम नहीं कर रहा है और इस तरह हल करने के लिए सिरदर्द है।

पढ़ने के लिए आसान है

यह परिचितता पर निर्भर करता है।
मैंने हमेशा देखा है और <?php echo उपयोग किया है। तो जबकि <?= पढ़ने के लिए मुश्किल नहीं है, यह मेरे लिए परिचित नहीं है और इस प्रकार पढ़ने में आसान नहीं है

और सामने वाले अंत / बैक एंड डेवलपर स्प्लिट (अधिकांश कंपनियों के साथ) के साथ उन टेम्पलेट्स पर काम कर रहे एक फ्रंट एंड डेवलपर को अधिक परिचित होना चाहिए <?= "PHP ओपन टैग और इको" के बराबर है?
मैं कहूंगा कि अधिक तार्किक के साथ अधिक आरामदायक होगा। यही है, एक स्पष्ट PHP खुला टैग और फिर क्या हो रहा है "गूंज" - <?php echo

जोखिम आकलन
समस्या = पूरी साइट या कोर स्क्रिप्ट काम करने में विफल;

समस्या की संभावना बहुत कम है + परिणाम की गंभीरता बहुत अधिक = उच्च जोखिम है

निष्कर्ष

आप यहां कुछ सेकंड बचाते हैं और वहां कुछ वर्ण टाइप नहीं होते हैं, लेकिन इसके लिए बहुत अधिक जोखिम होता है, और परिणामस्वरूप परिणामस्वरूप पठनीयता भी कम हो जाती है।

<?= परिचित फ्रंट या बैक एंड कोडर <?php echo समझने की अधिक संभावना है, क्योंकि वे मानक PHP चीजें हैं - मानक <?php open टैग और बहुत अच्छी तरह से ज्ञात "गूंज"।
(यहां तक ​​कि फ्रंट एंड कोडर को "गूंज" पता होना चाहिए या वे ढांचे द्वारा प्रदत्त किसी भी कोड पर काम नहीं करेंगे)।

जबकि रिवर्स की संभावना नहीं है, किसी को तर्कसंगत रूप से कम करने की संभावना नहीं है कि एक PHP शॉर्ट टैग पर बराबर चिह्न "गूंज" है।


मैंने विषय पर जानकारी देखने के बाद इस पृष्ठ को पढ़ा, और मुझे लगता है कि एक प्रमुख मुद्दे का उल्लेख नहीं किया गया है: आलस्य बनाम स्थिरता। PHP के लिए "वास्तविक" टैग <? Php और?> हैं। क्यूं कर? मुझे वास्तव में परवाह नहीं है। जब आप PHP के लिए स्पष्ट रूप से हों तो आप कुछ और क्यों उपयोग करना चाहेंगे? <% और%> मेरा मतलब एएसपी है, और <स्क्रिप्ट ..... का मतलब है जावास्क्रिप्ट (ज्यादातर मामलों में)। तो स्थिरता, तेजी से सीखने, पोर्टेबिलिटी, और सादगी के लिए, मानक से चिपके क्यों नहीं?

दूसरी ओर मैं मानता हूं कि टेम्पलेट्स (और केवल टेम्पलेट्स में) में छोटे टैग उपयोगी लगते हैं, लेकिन समस्या यह है कि हमने अभी यहां चर्चा करने में इतना समय बिताया है कि वास्तव में बर्बाद होने में बहुत लंबा समय लगेगा "php" के अतिरिक्त तीन अक्षर टाइप करने में उतना ही समय !!

जबकि कई विकल्प अच्छे हैं, यह बिल्कुल तार्किक नहीं है और इससे समस्याएं पैदा हो सकती हैं। कल्पना करें कि प्रत्येक प्रोग्रामिंग भाषा में 4 या अधिक प्रकार के टैग की अनुमति है: जावास्क्रिप्ट <JS या <script .... या <% या <हो सकता है? जेएस .... क्या यह सहायक होगा? PHP के मामले में पार्सिंग ऑर्डर इन चीजों को अनुमति देने के पक्ष में होता है, लेकिन भाषा कई अन्य तरीकों से लचीली नहीं है: यह थोड़ी सी असंगतता पर नोटिस या त्रुटियों को फेंकता है, फिर भी छोटे टैग अक्सर उपयोग किए जाते हैं। और जब सर्वर पर छोटे टैग का उपयोग किया जाता है जो उनका समर्थन नहीं करता है, तो कुछ मामलों में कोई त्रुटि नहीं होने के कारण गलत होने में काफी समय लग सकता है।

अंत में, मुझे नहीं लगता कि छोटे टैग यहां समस्या हैं: केवल दो लॉजिकल प्रकार के PHP कोड ब्लॉक हैं - 1) नियमित PHP कोड, 2) टेम्पलेट echoes। पूर्व के लिए, मैं दृढ़ता से मानता हूं कि केवल <? Php और?> को सबकुछ सुसंगत और पोर्टेबल रखने की अनुमति दी जानी चाहिए। उत्तरार्द्ध के लिए, <? = $ Var?> विधि बदसूरत है। ऐसा क्यों होना चाहिए? कुछ और तार्किक क्यों नहीं जोड़ते? <? php $ var?> वह कुछ भी नहीं करेगा (और केवल सबसे दूरस्थ संभावनाओं में यह किसी चीज़ के साथ संघर्ष कर सकता है), और यह आसानी से अजीब <? = वाक्यविन्यास को प्रतिस्थापित कर सकता है। या यदि यह एक समस्या है, तो शायद वे <? Php = $ var?> का उपयोग कर सकते हैं और असंगतताओं के बारे में चिंता न करें।

उस बिंदु पर जहां खुले और करीबी टैग के लिए 4 विकल्प हैं और एक विशेष "गूंज" टैग के यादृच्छिक जोड़, PHP के साथ php.ini या .htaccess में "कस्टम ओपन / क्लोज टैग" ध्वज हो सकता है। इस तरह डिजाइनर वह सबसे अच्छा पसंद कर सकते हैं। लेकिन स्पष्ट कारणों से जो अधिक है। तो 4+ विकल्प क्यों अनुमति दें?


इस संपूर्ण चर्चा के साथ समस्या एक टेम्पलेट भाषा के रूप में PHP के उपयोग में निहित है। कोई भी बहस नहीं कर रहा है कि एप्लिकेशन स्रोत फ़ाइलों में टैग का उपयोग किया जाना चाहिए।

हालांकि PHP के एम्बेड करने योग्य वाक्यविन्यास को इसे एक शक्तिशाली टेम्पलेट भाषा के रूप में उपयोग करने की अनुमति मिलती है, और टेम्पलेट जितना संभव हो उतना सरल और पठनीय होना चाहिए। कई लोगों ने स्मार्टी जैसे बहुत धीमी, एड-ऑन टेम्पलेटिंग इंजन का उपयोग करना आसान पाया है, लेकिन उन शुद्धियों के लिए जो तेजी से प्रतिपादन और शुद्ध कोड बेस की मांग करते हैं, PHP टेम्पलेट्स लिखने का एकमात्र तरीका है।

लघु टैग के उपयोग के खिलाफ केवल वैध तर्क यह है कि वे सभी सर्वरों पर समर्थित नहीं हैं। एक्सएमएल दस्तावेजों के साथ संघर्ष के बारे में टिप्पणियां लुभावनी हैं, क्योंकि आपको शायद PHP और एक्सएमएल को मिश्रित नहीं करना चाहिए; और यदि आप हैं, तो आपको पाठ के आउटपुट स्ट्रिंग्स के लिए PHP का उपयोग करना चाहिए। सुरक्षा कभी भी कोई समस्या नहीं होनी चाहिए, क्योंकि यदि आप टेम्पलेट फ़ाइलों के अंदर डेटाबेस एक्सेस क्रेडेंशियल्स जैसे संवेदनशील जानकारी डाल रहे हैं, तो आपके पास बड़ी समस्याएं हैं!

अब, सर्वर समर्थन के मुद्दे के रूप में, स्वीकार्य रूप से किसी को अपने लक्षित प्लेटफॉर्म से अवगत होना चाहिए। यदि साझा होस्टिंग एक संभावित लक्ष्य है, तो छोटे टैग से बचा जाना चाहिए। लेकिन कई पेशेवर डेवलपर्स (जैसे स्वयं) के लिए, ग्राहक स्वीकार करता है (और वास्तव में, इस तथ्य पर निर्भर करता है) कि हम सर्वर की आवश्यकताओं को निर्देशित करेंगे। अक्सर मैं सर्वर को स्थापित करने के लिए ज़िम्मेदार हूं।

और हम कभी भी एक होस्टिंग प्रदाता के साथ काम नहीं करते हैं जो हमें सर्वर कॉन्फ़िगरेशन का पूर्ण नियंत्रण नहीं देता है - इस तरह के मामले में हम छोटे टैग समर्थन को खोने से कहीं अधिक परेशानी के लिए दौड़ने पर भरोसा कर सकते हैं। यह बस नहीं होता है।

तो हाँ - मैं मानता हूं कि छोटे टैग का उपयोग सावधानीपूर्वक वजन किया जाना चाहिए। लेकिन मैं दृढ़ता से मानता हूं कि यह हमेशा एक विकल्प होना चाहिए, और एक डेवलपर जो अपने पर्यावरण से अवगत है उसे उपयोग करने में स्वतंत्र महसूस होना चाहिए।


http://uk3.php.net/manual/en/language.basic-syntax.phpmode.php में बहुत सारी सलाह है, जिनमें निम्न शामिल हैं:

जबकि कुछ लोगों को लघु टैग और एएसपी स्टाइल टैग सुविधाजनक लगता है, वे कम पोर्टेबल होते हैं, और आम तौर पर अनुशंसित नहीं होते हैं।

तथा

ध्यान दें कि यदि आप एक्सएमएल या एक्सएचटीएमएल के भीतर PHP को एम्बेड कर रहे हैं तो आपको मानकों के अनुरूप बने रहने के लिए <?php ?> टैग का उपयोग करना होगा।

तथा

पुनर्वितरण के लिए उपयोग किए जाने वाले अनुप्रयोगों या पुस्तकालयों को विकसित करते समय, या आपके सर्वर के अंतर्गत मौजूद PHP सर्वर पर तैनाती के दौरान छोटे टैग का उपयोग करना चाहिए, क्योंकि छोटे टैग लक्ष्य सर्वर पर समर्थित नहीं हो सकते हैं। पोर्टेबल, पुनर्वितरण योग्य कोड के लिए, सुनिश्चित करें कि छोटे टैग का उपयोग न करें।



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

मेरे दो सेंट? यदि आप कहीं और कोड चलाने की योजना नहीं बनाते हैं, तो यदि आप चाहें तो उनका उपयोग करें। मुझे एक बड़े पैमाने पर खोज करने की ज़रूरत नहीं है और जब मुझे एहसास होता है कि यह एक बेवकूफ विचार था।


यदि आप XSS बारे में परवाह करते हैं तो आपको <?= htmlspecialchars(…) ?> अधिकांश समय का उपयोग करना चाहिए, इसलिए एक छोटा टैग कोई बड़ा अंतर नहीं बनाता है।

भले ही आप echo htmlspecialchars() को h() , फिर भी यह एक समस्या है जिसे आपको लगभग हर बार जोड़ने के लिए याद रखना होगा (और यह ट्रैक रखने की कोशिश कर रहा है कि कौन सा डेटा पूर्व-बच निकला है, जो अनचाहे है लेकिन केवल हानिरहित है गलतियों की संभावना अधिक है)।

मैं एक टेम्पलेटिंग इंजन का उपयोग करता हूं जो डिफ़ॉल्ट रूप से सुरक्षित है और मेरे लिए <?php टैग लिखता है।


PHP 5.4 से शुरू होने पर, गूंज शॉर्टकट संक्षिप्त टैग से एक अलग समस्या है, क्योंकि गूंज शॉर्टकट हमेशा सक्षम होगा। यह अब एक तथ्य है:

तो गूंज शॉर्टकट स्वयं ( <?= ) अब उपयोग करने के लिए सुरक्षित है।


जब आप एमवीसी फ्रेमवर्क या सीएमएस के साथ काम करते हैं तो अलग-अलग दृश्य फ़ाइलों के साथ काम करना अच्छा होता है।
यह तेजी से, कम कोड है, डिजाइनरों के लिए भ्रमित नहीं है। बस सुनिश्चित करें कि आपका सर्वर कॉन्फ़िगरेशन उनका उपयोग करने की अनुमति देता है।


No, and they're being phased out by PHP 6 so if you appreciate code longevity, simply don't use them or the <% ... %> tags.


पोर्टेबिलिटी समस्याओं से बचने के लिए, <?php साथ PHP टैग प्रारंभ करें और यदि आपकी PHP फ़ाइल पूरी तरह से PHP है, तो कोई HTML नहीं है, तो आपको बंद टैग का उपयोग करने की आवश्यकता नहीं है।


I thought it worth mentioning that as of PHP 7:

  • Short PHP tags <? … ?> are gone
  • Since PHP 5.4, Short Print tags <?=… ?> are always enabled, regardless of the short_open_tag setting.

Good riddance to the first one, as it interfered with other languages.

There is now no reason not to use the short print tags, apart from personal preference.

Of course, if you're writing code to be compatible with legacy versions of PHP 5, you will need to stick to the old rules, but remember that anything before PHP 5.6 is now unsupported.

See: https://secure.php.net/manual/en/language.basic-syntax.phptags.php


  • कुछ वेबसर्वर (साझा मेजबान इत्यादि) में डिफ़ॉल्ट रूप से लघु टैग चालू नहीं होते हैं, इसलिए यदि आपको इनमें से किसी एक में स्थानांतरित करने की आवश्यकता है तो कोड पोर्टेबिलिटी एक समस्या बन जाती है।

  • कुछ के लिए पठनीयता एक मुद्दा हो सकता है। कई डेवलपर्स पा सकते हैं कि <?php आंख को कोड ब्लॉक की शुरुआत के एक और स्पष्ट मार्कर के रूप में पकड़ता है <? जब आप एक फ़ाइल स्कैन करते हैं, खासकर यदि आप HTML और PHP के साथ कोड बेस के साथ फंस गए हैं तो कसकर अंतर-बुना हुआ।


क्योंकि भ्रम यह एक्सएमएल घोषणाओं के साथ उत्पन्न कर सकता है। हालांकि, बहुत से लोग आपसे agree

एक अतिरिक्त चिंता वह दर्द है जो छोटे टैग के साथ सबकुछ कोड करने के लिए उत्पन्न होती है, केवल अंत में यह पता लगाने के लिए कि अंतिम होस्टिंग सर्वर ने उन्हें बंद कर दिया है ...


उनकी अनुशंसा नहीं की जाती है क्योंकि यह एक पिटा है यदि आपको कभी भी अपने कोड को उस सर्वर पर ले जाना है जहां यह समर्थित नहीं है (और आप इसे सक्षम नहीं कर सकते)। जैसा कि आप कहते हैं, बहुत से साझा मेजबान शॉर्टटैग का समर्थन करते हैं लेकिन "बहुत" उनमें से सभी नहीं हैं। अगर आप अपनी स्क्रिप्ट साझा करना चाहते हैं, तो पूर्ण वाक्यविन्यास का उपयोग करना सबसे अच्छा है।

मैं सहमत हूं कि <? और <?= प्रोग्रामर पर <?php और <?php echo से अधिक आसान है, लेकिन जब तक आप एक ही फॉर्म का उपयोग करते हैं, तब तक थोक खोज-और-प्रतिस्थापन करना संभव है (और रिक्त स्थान में चक न करें (उदा। : <? php या <? = )

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

जैसा कि ThiefMaster टिप्पणियों में उल्लेख करता है, PHP 5.4 के रूप में, <?= ... ?> टैग्स को हर जगह समर्थित किया जाता है, शॉर्टटैग सेटिंग्स के बावजूद । इसका मतलब यह होना चाहिए कि वे पोर्टेबल कोड में उपयोग करने के लिए सुरक्षित हैं लेकिन इसका मतलब यह है कि PHP 5.4+ पर निर्भरता है। यदि आप प्री-5.4 का समर्थन करना चाहते हैं और शॉर्टटैग की गारंटी नहीं दे सकते हैं, तो आपको अभी भी <?php echo ... ?> का उपयोग करने की आवश्यकता होगी।

साथ ही, आपको यह जानने की जरूरत है कि एएसपी टैग <%,%>, <% =, और स्क्रिप्ट टैग PHP 7 से हटा दिए जाते हैं । इसलिए यदि आप दीर्घकालिक पोर्टेबल कोड का समर्थन करना चाहते हैं और सबसे आधुनिक उपकरणों पर स्विच करना चाहते हैं तो कोड के उन हिस्सों को बदलने पर विचार करें।


आईएमएचओ जो लोग छोटे टैग का उपयोग करते हैं वे अक्सर जो कुछ भी गूंज रहे हैं उससे बचने के लिए भूल जाते हैं। डिफ़ॉल्ट रूप से बचने वाला टेम्पलेट इंजन होना अच्छा लगेगा। मेरा मानना ​​है कि रोब ए ने ज़ेंड फ्रेमवर्क ऐप्स में छोटे टैग से बचने के लिए एक त्वरित हैक लिखा था। यदि आपको छोटे टैग पसंद हैं क्योंकि यह PHP को पढ़ने में आसान बनाता है। तो Smarty एक बेहतर विकल्प हो सकता है?

{$myString|escape}

मेरे लिए जो बेहतर दिखता है

<?= htmlspecialchars($myString) ?> 

<?php ?> are much better to use since developers of this programming language has massively updated their core-language. You can see the difference between the short tags and long tags.

Short tags will be highlighted as light red while the longer ones are highlighted darker!

However, echoing something out, for example: <?=$variable;?> is fine. But prefer the longer tags. <?php echo $variable;?>





php-shorttags