แท็กสั้น PHP สามารถใช้ได้หรือไม่?


522

นี่คือข้อมูลตามเอกสารอย่างเป็นทางการ :

มีแท็กเปิดและปิดสี่คู่ที่แตกต่างกันซึ่งสามารถใช้ใน PHP ได้ สองรายการนั้น<?php ?> และ<script language="php"> </script>พร้อมใช้งานเสมอ อีกสองแท็กสั้นและแท็กสไตล์ ASP และสามารถเปิดและปิดได้จากไฟล์กำหนดค่า php.ini เป็นเช่นนี้ในขณะที่บางคนพบแท็กสั้นและรูปแบบแท็ก ASP สะดวกที่พวกเขาเป็นแบบพกพาน้อยลงและโดยทั่วไปไม่แนะนำ

จากประสบการณ์ของผมเซิร์ฟเวอร์ส่วนใหญ่จะมีแท็กเปิดการใช้งานสั้น การพิมพ์

<?=

สะดวกกว่าการพิมพ์

<?php echo 

ความสะดวกสบายของโปรแกรมเมอร์เป็นปัจจัยสำคัญดังนั้นทำไมถึงไม่แนะนำ


61
ในการตอบคำถามwhyฉันขออ้างอิงคู่มือการรับรอง Zend PHP 5: "แท็กสั้น ๆ เป็นเวลามาตรฐานของโลก PHP อย่างไรก็ตามพวกเขามีข้อเสียเปรียบครั้งใหญ่ที่ขัดแย้งกับส่วนหัว XML ดังนั้นจึงค่อนข้าง ตกข้างทาง "
ปุย

7
กรณีการใช้งานที่มีปัญหาเกิดขึ้นนั่นหมายความว่าเป็นเรื่องยากสำหรับนักพัฒนาในการสร้าง XML โดยใช้ PHP ใช่หรือไม่
Jon z

9
สมมติว่าคุณมีเอกสาร XML ที่คุณต้องการให้เป็นสาธารณะ แต่คุณต้องการให้เอกสาร php แยกวิเคราะห์ได้ด้วยเหตุผลใดก็ตามคุณจึงสร้าง. xml แยกวิเคราะห์โดยเบราว์เซอร์ของคุณ คุณใช้แท็กสั้น ๆ เพื่อเปิดใช้งานและทันใดนั้นเอกสาร XML ก็ถูกแยกวิเคราะห์ผ่านส่วนหัว XML เพื่อแยกสิ่งต่าง ๆ ทำให้ฉันพยายามที่จะคิดออกมานานแล้ว นับตั้งแต่รหัสสั้น ๆ ได้รับการปิดใช้งานบนเซิร์ฟเวอร์ใด ๆ ผมทำงานและทีมงานใด ๆ ที่ผมเคยทำงานกับได้มีการหันไปใช้รหัสสั้นไม่ใช่
thenetimp

43
จาก PHP 5.4.0 คำสั่ง short_open_tag ไม่รวมแท็ก echo สั้น ๆ <?= $example;?> ! สิ่งนี้สำคัญมากเนื่องจากการใช้แท็กสั้นอื่น ๆ ทั้งหมดถือว่าไร้ประโยชน์ อย่างไรก็ตามการใช้แท็ก echo สั้น ๆ จะได้รับการสนับสนุนต่อจากนี้เป็นต้นไป มันให้รหัสฐานที่ราบรื่นและเป็นระเบียบ - esp ในมุมมองไฟล์ ดังนั้นสำหรับ PHP> = 5.4.0 <?= ?>สามารถนำมาใช้โดยไม่ต้องตั้งค่า short_open_tagโปรดอย่าใช้แท็กสั้น ๆ อื่น ๆ ในรหัสของคุณ รหัสเทพโกรธมากเมื่อคุณทำเช่นนั้น ...
ลั Sabev

6
ฉันกำลังจะเพิ่มสิ่งนี้เป็นความคิดเห็นด่วนเนื่องจากมีคำตอบที่ยาวมากเกินไป: <?ไม่ได้ใช้เฉพาะใน XML สำหรับการ<?xml version="1.0" ?>ประกาศเปิดเท่านั้น มันเป็นไวยากรณ์ทั่วไปสำหรับ "คำแนะนำในการประมวลผล" 2 <?xml-stylesheet ... ?>ตัวอย่างที่เป็นที่พบมากที่สุด <?phpสามารถพิจารณาได้ว่าเป็นคำสั่งในการประมวลผลที่ถูกต้องจริง ๆ เท่าที่จะทำได้<?=(ตามที่อนุญาตใน 5.4+) แต่การอ้างสิทธิ์ทั้งหมด<?จะสร้างความขัดแย้งที่ไม่จำเป็นระหว่างไวยากรณ์
IMSoP

คำตอบ:


374

พวกเขาไม่แนะนำเพราะมันเป็น PITA ถ้าคุณต้องย้ายรหัสของคุณไปยังเซิร์ฟเวอร์ที่ไม่ได้รับการสนับสนุน (และคุณไม่สามารถเปิดใช้งานได้) ในขณะที่คุณพูดว่าจำนวนมากของครอบครัวร่วมกันทำสนับสนุน shorttags แต่ "จำนวนมาก" ไม่ได้เป็นทั้งหมดของพวกเขา หากคุณต้องการแบ่งปันสคริปต์ของคุณวิธีที่ดีที่สุดคือใช้ไวยากรณ์แบบเต็ม

ฉันยอมรับว่า<?และ<?=เขียนโปรแกรมได้ง่ายกว่า<?phpและ<?php echoเป็นไปได้ที่จะทำการค้นหาและแทนที่จำนวนมากตราบใดที่คุณใช้แบบฟอร์มเดียวกันทุกครั้ง (และไม่เชยในช่องว่าง (เช่น: <? phpหรือ<? =)

ฉันไม่ได้ซื้อเหตุผลที่อ่านง่าย นักพัฒนาที่จริงจังส่วนใหญ่มีตัวเลือกในการเน้นไวยากรณ์ให้กับพวกเขา

ในฐานะที่เป็น ThiefMaster กล่าวถึงในความคิดเห็นที่เป็นของ PHP 5.4<?= ... ?>แท็กได้รับการสนับสนุนทุกที่โดยไม่คำนึงถึงการตั้งค่า shorttags นี่ควรหมายความว่ามันปลอดภัยที่จะใช้ในโค้ดพกพา แต่นั่นก็หมายความว่ามีการพึ่งพา PHP 5.4+ หากคุณต้องการให้การสนับสนุนก่อน 5.4 และไม่สามารถ shorttags <?php echo ... ?>รับประกันคุณจะยังคงต้องใช้

นอกจากนี้คุณจำเป็นต้องรู้ว่าASP แท็ก <%%> <% = และแท็กสคริปต์ถูกลบออกจาก PHP 7 ดังนั้นหากคุณต้องการสนับสนุนรหัสพกพาระยะยาวและต้องการเปลี่ยนเป็นเครื่องมือที่ทันสมัยที่สุดให้ลองพิจารณาเปลี่ยนส่วนของรหัสนั้น


91
ดังนั้นคำอธิบายคือ: พวกเขาไม่ดีเพราะพวกเขาไม่ได้รับการสนับสนุน? แต่ทำไมถึงไม่รองรับ เพราะพวกเขาไม่ได้เป็นส่วนหนึ่งของสเปค? ตกลง แต่ทำไมพวกเขาไม่ได้เป็นส่วนหนึ่งของสเปค? ฉันผิดหวังกับคำตอบนี้เล็กน้อย
Josef Sábl

61
ฉันไม่ได้มาที่นี่เพื่อพูดคุยเกี่ยวกับ "คำถามใหญ่" เหมือนว่าทำไมเราถึงมาถึงจุดเริ่มต้นทั้งหมดเป็นต้นการสนับสนุน Shorttag ไม่ได้รับการรับรองบนเซิร์ฟเวอร์ที่ใช้ร่วมกัน นั่นคือทั้งหมดที่คุณต้องรู้
Oli

39
ภาระผูกพัน PHP เป็นเครื่องมือแม่แบบ : P
ข้อผิดพลาดทางไวยากรณ์

49
แท็กสั้น ๆ จะไม่ถูกยกเลิก แท็กแบบสั้นสไตล์ ASP เท่านั้น
Brian Lacy

46
ในอนาคต (ใกล้มาก) ของ PHP 5.4 การใช้ <? = จะถูกแยกออกจากว่าจะเปิดใช้งานหรือปิดใช้งาน short_open_tags <? = ไม่ได้ถูกแบ่งออกค่อนข้างตรงกันข้ามซึ่งตอนนี้ถือว่าเป็นส่วนพื้นฐานของภาษา
Mr Griever

175

ฉันชอบที่<?=$whatever?>จะปล่อยมันไป ไม่เคยมีปัญหากับมัน ฉันจะรอจนกว่ามันจะกัดฉันในตูด ในทุกกรณีลูกค้าของฉัน (85%) มีสิทธิ์เข้าถึง php.ini ในโอกาสที่หายากที่พวกเขาถูกปิด อีก 15% ใช้ผู้ให้บริการโฮสต์หลักและเกือบทั้งหมดเปิดใช้งานได้ ฉันรักพวกเขา


41
@B Seven หากคุณพยายามหลีกเลี่ยงปัญหาทางทฤษฎีทุกอย่างที่อาจเกิดขึ้นรหัสของคุณจะแทบไม่มีประสิทธิภาพและบั๊กกี้แน่นอน จนกว่ากลุ่ม PHP จะตกลงที่จะกำจัดแท็กสั้น ๆ [ไม่ใช่แท็ก ASP] ความกังวลของการถูกกัดจะน้อยกว่ามากและวิธีแก้ปัญหาที่อาจเกิดขึ้นง่ายกว่ามากกว่าสิ่งอื่น ๆ ที่คุณสามารถใช้เวลาในการ "แก้ไข"
SamGoody

18
ถ้ามันกัดคุณให้ย้ายไปที่โฮสติ้งที่ดีกว่า
Lie Ryan

4
ฉันไม่เห็นด้วยกับการไม่ใช้อะไรเพราะอาจไม่ได้รับการสนับสนุน เราไม่ควรใช้คุณสมบัติอื่น ๆ ที่อาจไม่รองรับบนเซิร์ฟเวอร์? MYSQL เทียบกับ MYSQLI? คุณจะเสียเวลาทีละน้อย ๆ เขียนแท็กยาว ๆ ซ้ำ ๆ เพื่อหลีกเลี่ยงโอกาสเล็ก ๆ ที่จะใช้เวลาเล็กน้อยเพื่อเปลี่ยนเป็นโฮสต์ที่ดีกว่า
Dean หรือ

2
@Beven คุณหมายถึงคุณไม่ได้ใช้ส่วนขยาย PHP ใด ๆ ยกเว้นการส่งเริ่มต้นหรือไม่?
Pacerier

143

เริ่มต้นด้วย PHP 5.4 ทางลัด echo เป็นปัญหาแยกต่างหากจากแท็กสั้นเนื่องจากทางลัด echo จะเปิดใช้งานเสมอ เป็นจริงแล้วตอนนี้:

ดังนั้นทางลัด echo นั้น ( <?=) จึงปลอดภัยที่จะใช้ตอนนี้


19
ฉันจะบอกว่านี่เป็น "แท็กสั้น" เท่านั้นที่จำเป็น <?phpสามารถใช้งานได้เมื่อเริ่มต้นไฟล์คลาสทั้งหมดจากนั้นคุณมี<?=มุมมองของคุณ ชนะ
Xeoncross

6
So the echo shortcut itself (<?=) is safe to use... ตราบใดที่คุณต้องการ PHP 5.4 แอพ PHP ที่มีการกระจายอย่างกว้างขวาง (เช่น wordpress) ไม่มีความต้องการระดับหรู 5.4 และยังคงให้การสนับสนุน PHP 4 ต่อเนื่องจนถึงปี 2011 ซึ่งเป็นเวลา 7 ปีเต็มหลังจากที่ PHP 5 เปิดตัว หากคุณอยู่ในสถานที่เช่น Facebook ซึ่งการติดตั้งซอฟต์แวร์ทั้งหมดของคุณนั้นดำเนินการโดยตรงโดย บริษัท เองดังนั้นการขอรับการสนับสนุน 5.4 จะง่ายกว่าการทำงานของโครงการเช่น wordpress
Frank Farmer

@dukeofgaming ว้าวจับได้ดีไม่รู้ว่าการแก้ไข SVN ของพวกเขาสามารถเข้าถึงได้บนเว็บ
Pacerier

82

ปัญหาของการสนทนาทั้งหมดนี้คือการใช้ PHP เป็นภาษาเทมเพลต ไม่มีใครโต้แย้งว่าควรใช้แท็กในไฟล์ต้นฉบับของแอปพลิเคชัน

อย่างไรก็ตามไวยากรณ์ที่ฝังได้ของ PHP ช่วยให้สามารถใช้เป็นภาษาแม่แบบที่ทรงพลังและแม่แบบควรเรียบง่ายและอ่านได้มากที่สุด หลายคนพบว่าการใช้เครื่องมือ templating ที่ช้าลงเช่น Smarty นั้นทำได้ง่ายขึ้น แต่สำหรับนักสอนในหมู่พวกเราที่ต้องการการเรนเดอร์ที่รวดเร็วและฐานรหัสที่บริสุทธิ์ PHP เป็นวิธีเดียวที่จะเขียนเทมเพลต

อาร์กิวเมนต์ที่ถูกต้องเพียงอย่างเดียวกับการใช้แท็กสั้น ๆ คือพวกเขาไม่ได้รับการสนับสนุนในเซิร์ฟเวอร์ทั้งหมด ความคิดเห็นเกี่ยวกับข้อขัดแย้งกับเอกสาร XML นั้นน่าหัวเราะเพราะคุณไม่ควรผสม PHP กับ XML อยู่ดี และถ้าคุณเป็นคุณควรใช้ PHP เพื่อส่งออกสตริงข้อความ ความปลอดภัยไม่ควรเป็นปัญหาเพราะถ้าคุณใส่ข้อมูลที่ละเอียดอ่อนเช่นข้อมูลรับรองการเข้าถึงฐานข้อมูลไว้ในไฟล์เทมเพลตคุณก็จะมีปัญหาใหญ่กว่าเดิม!

ในตอนนี้ปัญหาของการสนับสนุนเซิร์ฟเวอร์ต้องยอมรับว่าแพลตฟอร์มเป้าหมายของพวกเขาเป็นที่ยอมรับ หากโฮสติ้งที่ใช้ร่วมกันเป็นเป้าหมายที่มีแนวโน้มคุณควรหลีกเลี่ยงแท็กสั้น ๆ แต่สำหรับนักพัฒนามืออาชีพหลายคน (เช่นตัวฉันเอง) ลูกค้ารับทราบ (และแน่นอนขึ้นอยู่กับความจริง) ว่าเราจะกำหนดความต้องการของเซิร์ฟเวอร์ บ่อยครั้งที่ฉันต้องรับผิดชอบตั้งค่าเซิร์ฟเวอร์เอง

และเราไม่เคยทำงานร่วมกับผู้ให้บริการโฮสติ้งที่ไม่ให้การควบคุมการกำหนดค่าเซิร์ฟเวอร์กับเราอย่างแน่นอน - ในกรณีเช่นนี้เราสามารถพึ่งพาการทำงานให้มีปัญหามากกว่าการสูญเสียการสนับสนุนแท็กสั้น ๆ มันไม่ได้เกิดขึ้น

ใช่ - ฉันเห็นด้วยว่าควรใช้การชั่งน้ำหนักแท็กสั้น ๆ อย่างระมัดระวัง แต่ฉันก็เชื่ออย่างแน่นหนาว่ามันควรจะเป็นตัวเลือกเสมอและนักพัฒนาที่ตระหนักถึงสภาพแวดล้อมของเขาควรใช้มันอย่างอิสระ


6
หากด้วยเหตุผลบางอย่างคุณได้ตั้งค่า apache ให้ส่งไฟล์. xml ไปที่ mod_php สิ่ง <? xml น่าจะปวดหัวพร้อมกับแท็กสั้น ๆ แต่เห็นได้ชัดว่าเป็นการตั้งค่าที่แปลกประหลาด
แฟรงก์ชาวนา

3
templatingภาษาที่ไม่สามารถฝังตัวโดยไม่ต้องแก้ไขปัญหาในบางประเภทของเอกสารการส่งออกเป็นใหญ่ล้มเหลว เหตุผลเดียวที่ฉันไม่ควรมีเทมเพลต XML ที่มีรหัส PHP และแท็กสั้น ๆ คือเพราะมันใช้งานไม่ได้ไม่ใช่เพราะมันไม่สมเหตุสมผล
Vinko Vrsalovic

8
ไม่ใช่ "การล้มเหลวครั้งใหญ่" ในการใช้ประโยชน์จาก PHP เป็นภาษาที่รวดเร็วและสะดวก อย่างที่ฉันได้กล่าวไปแล้วมันเป็นเรื่องของการชั่งน้ำหนักข้อดีและข้อเสียและการเขียนโค้ดในลักษณะที่เหมาะสมกับวิธีการที่คุณเลือก อย่ายกเลิกแนวทางที่ถูกต้องอย่างเด็ดขาดเพราะมันจะไม่ทำงานในสถานการณ์เฉพาะอย่างใดอย่างหนึ่ง (ซึ่งสามารถแก้ไขได้อย่างง่ายดาย)
Brian Lacy

5
ฉันไม่ได้ละทิ้งวิธีการที่ถูกต้องอย่างเด็ดขาด (ดูคำตอบของคำถาม) คุณเป็นคนที่แยก PHP ใน XML อย่างเด็ดขาดฉันอ้างว่า: "คุณไม่ควรผสม PHP กับ XML อยู่ดี" ยิ่งไปกว่านั้นความล้มเหลวครั้งใหญ่ที่ฉันอ้างถึงคือการตัดสินใจใช้<?แท็กสั้น ๆ เพราะมันนำไปสู่การแก้ปัญหาที่น่าเกลียดบน XML ที่กล่าวว่าฉันยอมรับว่ามันเป็นเรื่องของการชั่งน้ำหนักผลประโยชน์และข้อเสียและถ้าคุณรู้ว่าคุณกำลังทำอะไรอยู่คุณสามารถทำได้อย่างแน่นอน แต่นี่ไม่ใช่<?ทางเลือกที่ดี
Vinko Vrsalovic

3
ฉันไปงานปาร์ตี้ช้านิดหน่อย แต่ฉันชอบคำตอบนี้มากและมันก็สะท้อนประสบการณ์ของฉันกับสถานการณ์ ในขณะที่เรามีความขัดแย้งในประเด็นในสำนักงานของฉันฉันสามารถพูดได้ว่าด้วยการทำงานใกล้เคียงทุกวันใน php เป็นเวลาหลายปีฉันไม่เคยเจอปัญหานี้เลย เมื่อ PHP ถูกใช้เพื่อสร้าง XML มันมีประสบการณ์ของฉันเสมอในบริบทของเนื้อหาแบบไดนามิกสูงที่ไม่เคย templated โดยตรงผ่าน PHP ดังนั้นปัญหาก็ไม่เคยเกิดขึ้น
redreinard

33

แท็กสั้นจะมาขอบคุณกลับไปZend Frameworkผลักดัน " PHP เป็นภาษาแม่แบบ " ของพวกเขาในการกำหนดค่าเริ่มต้น MVC ฉันไม่เห็นสิ่งที่อภิปรายเกี่ยวกับซอฟต์แวร์ส่วนใหญ่ที่คุณจะผลิตในช่วงชีวิตของคุณจะทำงานบนเซิร์ฟเวอร์ที่คุณหรือ บริษัท ของคุณจะควบคุม ตราบใดที่คุณรักษาตัวเองเอาไว้คงไม่มีปัญหาอะไร

UPDATE

หลังจากทำงานค่อนข้างน้อยกับMagentoซึ่งใช้รูปแบบยาว ดังนั้นฉันจึงเปลี่ยนมาใช้รูปแบบยาวของ:

<?php and <?php echo

เกิน

<? and <?=

ดูเหมือนว่าจะมีงานจำนวนเล็กน้อยเพื่อรับประกันการทำงานร่วมกัน


8
ฉันอิสระและรหัสของฉันทั้งหมดไปที่โฮสติ้งที่ใช้ร่วมกันจึงไม่มีการควบคุมเลย :)
MDCore

12
หากคุณมีลูกค้ามากพอที่จะย้ายมาที่ coloc ของตัวเองโฮสติ้งที่ใช้ร่วมกันจะไม่ปลอดภัยและไม่เสถียร
Jake McGraw

2
แท็กสั้น ๆ ที่ Zend นำกลับมาไม่ชัดเจนเนื่องจาก Zend กำลังใช้รุ่นยาว: framework.zend.com/manual/en/zend.view.scripts.html
Gerry

3
@Gerry ฉันได้อ่านเมื่อเร็ว ๆ นี้ดูความคิดเห็นล่าสุดในหัวข้อนี้: อัปเดต. htaccess เพื่อเปิดใช้งานแท็กเปิดสั้น ๆ
MrWhite

2
คุณควรแก้ไขไวยากรณ์ในประโยคแรกหลังจาก UPDATE ซึ่งไม่สมเหตุสมผลในรูปแบบปัจจุบัน
redreinard

22

เนื่องจากความสับสนนั้นสามารถสร้างขึ้นได้ด้วยการประกาศ XML หลายคนเห็นด้วย กับคุณ

ข้อกังวลเพิ่มเติมคือความเจ็บปวดที่มันสร้างรหัสทุกอย่างด้วยแท็กสั้น ๆ เท่านั้นเพื่อค้นหาในตอนท้ายว่าเซิร์ฟเวอร์โฮสต์สุดท้ายปิดใช้งาน ...


การประกาศ XML จะไม่สร้างความสับสนหรือไม่หากเปิด short_tags?
MDCore

ดังนั้นแทนที่จะแสดงผลลัพธ์การประกาศ XML โดยตรงคุณมี PHP echo มันไม่ใช่การลบล้างที่ดีจริงๆ
หมู่

มันไม่ได้เป็นข้อแก้ตัวอะไรเลย มันเป็นเพียงเหตุผลที่แท้จริงซึ่งเป็นสาเหตุของเหตุผลอื่น ๆ "hoster จะปิด" ซึ่งแน่นอนว่าคุณสามารถใช้มันได้หากคุณรู้ว่าคุณกำลังทำอะไรอยู่เช่นเคย
Vinko Vrsalovic

1
@macek: ฉันรู้ดี มันเป็นเพียงตัวอย่างแรกที่ฉันคิดถึง อีกอย่างถ้าคุณฝัง PHP ไว้ในไฟล์ XML แล้วล่ะ? คุณไม่สามารถทำได้โดยตรง และอย่าบอกวิธีแก้ปัญหาให้ฉันเช่นกันฉันรู้แล้ว ประเด็นก็คือมีวิธีมากมายสำหรับ PHP ในการแยกวิเคราะห์ไฟล์ XML คุณสามารถยกเลิกพวกเขาทั้งหมดด้วยวิธีแก้ปัญหา ( <?='<?xml') หรือโดยการพูดว่า "คุณไม่ควรทำเช่นนั้น" แต่นั่นก็ไม่ได้ทำให้ความจริงที่ว่ามันสามารถเกิดขึ้นได้หายไป
Vinko Vrsalovic

1
แท็กสั้น ๆ จะเจ็บปวดแค่ไหนหากพวกเขาไม่ทำงาน มันเป็นเรื่องง่ายมากที่จะทำจำนวนมากและแทนที่ด้วย<?= <? echo เครื่องมือแก้ไขข้อความหลายตัวสามารถจัดการกับไฟล์นี้ได้หลายพันไฟล์ในคราวเดียว
มิโกะ

20

ต่อไปนี้เป็นแผนภาพการไหลที่ยอดเยี่ยมของเดียวกัน:

ต้นไม้การตัดสินใจใช้ <? =

ที่มา: คำถามที่คล้ายกันเกี่ยวกับการแลกเปลี่ยนกองวิศวกรรมซอฟต์แวร์


2
นี่เป็นการอธิบายว่าจะใช้แท็ก echo สั้น ๆ ไม่เหมือนกับ<?แท็กสั้น ๆ ที่กล่าวถึงในคำถาม (แม้ว่าจะใช้การตั้งค่าคอนฟิกแบบเดียวกันก่อน 5.4)
Alok

ในความเป็นจริงนี้ควรเป็นคำตอบที่ทุกคนสามารถเข้าใจได้แม้ว่าสถานการณ์จะไม่ได้อธิบายอย่างแท้จริงว่าทำไมคุณไม่ต้องการใช้แท็กสั้น ๆ ในหลายกรณี (เช่นไม่สามารถเปลี่ยนไฟล์ php.ini ในระบบโฮสต์ที่ใช้ร่วมกัน)
Björn K

14

http://uk3.php.net/manual/th/language.basic-syntax.phpmode.phpมีคำแนะนำมากมายรวมถึง:

ในขณะที่บางคนพบว่าแท็กสั้น ๆ และแท็กสไตล์ ASP สะดวกสบายพวกเขาพกพาได้น้อยลงและโดยทั่วไปไม่แนะนำ

และ

โปรดทราบว่าหากคุณฝัง PHP ไว้ใน XML หรือ XHTML คุณจะต้องใช้<?php ?>แท็กเพื่อให้สอดคล้องกับมาตรฐาน

และ

ควรหลีกเลี่ยงการใช้แท็กสั้น ๆ เมื่อพัฒนาแอปพลิเคชันหรือไลบรารีที่มีไว้สำหรับการแจกจ่ายซ้ำหรือการปรับใช้บนเซิร์ฟเวอร์ PHP ที่ไม่ได้อยู่ภายใต้การควบคุมของคุณเนื่องจากแท็กสั้น ๆ อาจไม่รองรับบนเซิร์ฟเวอร์เป้าหมาย สำหรับพกพารหัสที่แจกจ่ายซ้ำได้โปรดอย่าใช้แท็กสั้น ๆ


14

ในกรณีที่ทุกคนยังคงให้ความสนใจกับสิ่งนี้ ... ณ PHP 5.4.0 Alpha 1 <?=มีให้ใช้งานเสมอ:

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

ดังนั้นดูเหมือนว่าแท็กสั้น ๆ เป็น (a) ที่ยอมรับได้และ (b) อยู่ที่นี่ อย่างน้อยตอนนี้ ...


5
<?=ไม่ถือว่าเป็นแท็กสั้น ๆ ตั้งแต่ 5.4
T0xicCode

12
  • แท็กสั้น ๆ จะไม่เปิดใช้งานตามค่าเริ่มต้นในเว็บเซิร์ฟเวอร์บางแห่ง (โฮสต์ที่ใช้ร่วมกัน ฯลฯ ) ดังนั้นการพกพาโค้ดจะกลายเป็นปัญหาหากคุณต้องการย้ายไปยังหนึ่งในสิ่งเหล่านี้

  • การอ่านอาจเป็นปัญหาสำหรับบางคน นักพัฒนาหลายคนอาจพบว่าจุด<?phpดึงดูดสายตาเป็นจุดเริ่มต้นของบล็อกรหัสที่ชัดเจนกว่า<?เมื่อคุณสแกนไฟล์โดยเฉพาะอย่างยิ่งถ้าคุณติดอยู่กับฐานรหัสด้วยHTMLและ PHP อย่างแน่นหนา


2
แท็กสั้นเปิดใช้งานใน 95% ของเว็บเซิร์ฟเวอร์
เปาโล Bergantino

19
ฉันไม่ซื้ออาร์กิวเมนต์ "อ่านง่าย" หากคุณใช้ PHP เป็นภาษาเทมเพลตคุณ<?= $var ?>สามารถอ่านได้มากกว่า<?php echo $var ?>
Frank Farmer

2
@Paulo นี้อาจมีการเปลี่ยนแปลงตั้งแต่ '08 แต่ EC2 Ubuntu และ Fedora กรณีที่มีการติดตั้งและ yum apt-get รุ่นของ PHP ได้สั้นติดแท็กคนพิการโดยค่าเริ่มต้น
ดั๊ก Molineux

2
ใช้แท็กเต็มรูปแบบและคุณจะมี 100% :)
เอลวิส Ciotti

1
@ FrankFarmer ฉันคิดว่าเขากำลังเปรียบเทียบสิ่งที่ไม่มีเสียงสะท้อน VS<? <?php
Pacerier

11

หมายเหตุ: การเริ่มต้นในแท็กสั้น PHP 5.4 <?=จะพร้อมใช้งานเสมอ


5

ฉันอ่านหน้านี้หลังจากค้นหาข้อมูลในหัวข้อและฉันรู้สึกว่ายังไม่มีการพูดถึงประเด็นสำคัญหนึ่งเรื่อง: ความเกียจคร้านเทียบกับความสอดคล้อง แท็ก "ของจริง" สำหรับ PHP คือ <? php และ?> ทำไม? ฉันไม่สนใจจริงๆ ทำไมคุณต้องการที่จะใช้อย่างอื่นเมื่อมีอย่างชัดเจนสำหรับ PHP? <% และ%> หมายถึง ASP สำหรับฉันและ <script ..... หมายถึง Javascript (ในกรณีส่วนใหญ่) ดังนั้นเพื่อความสอดคล้องการเรียนรู้อย่างรวดเร็วการพกพาและความเรียบง่ายทำไมไม่ยึดติดกับมาตรฐาน

ในทางกลับกันฉันยอมรับว่าแท็กสั้น ๆ ในเทมเพลต (และเฉพาะในเทมเพลต) ดูเหมือนจะมีประโยชน์ แต่ปัญหาคือเราเพิ่งใช้เวลาคุยกันมากที่นี่ซึ่งอาจจะใช้เวลานานกว่าจะเสียเปล่าจริง ๆ เวลานั้นพิมพ์อักขระพิเศษสามตัวของ "php" !!

ในขณะที่การมีตัวเลือกมากมายเป็นสิ่งที่ดี แต่ก็ไม่ได้มีเหตุผลอะไรเลย ลองนึกภาพถ้าทุกภาษาการเขียนโปรแกรมอนุญาตแท็ก 4 ประเภทขึ้นไป: Javascript อาจเป็น <JS หรือ <script .... หรือ <% หรือ <? JS .... มันจะมีประโยชน์ไหม? ในกรณีของ PHP คำสั่งการแยกวิเคราะห์มีแนวโน้มที่จะยอมให้สิ่งเหล่านี้ แต่ภาษานั้นมีหลายวิธีที่ไม่ยืดหยุ่น: มันจะประกาศข้อผิดพลาดหรือข้อผิดพลาดตามความไม่สอดคล้องกันเล็กน้อย แต่มีการใช้แท็กสั้น ๆ บ่อยๆ และเมื่อมีการใช้แท็กสั้น ๆ บนเซิร์ฟเวอร์ที่ไม่รองรับอาจต้องใช้เวลานานกว่าจะเข้าใจว่าเกิดอะไรขึ้นเนื่องจากไม่มีข้อผิดพลาดเกิดขึ้นในบางกรณี

ในที่สุดฉันไม่คิดว่าแท็กสั้น ๆ เป็นปัญหาที่นี่: มีเพียงสองประเภทตรรกะของบล็อกรหัส PHP - 1) รหัส PHP ปกติ 2) สะท้อนแม่แบบ สำหรับอดีตฉันเชื่อมั่นอย่างยิ่งว่าควรอนุญาตเฉพาะ <? php และ?> เพื่อให้ทุกอย่างสอดคล้องและพกพาได้ สำหรับหลังเมธอด <? = $ var?> นั้นน่าเกลียด ทำไมต้องเป็นเช่นนี้ ทำไมไม่เพิ่มอะไรที่มีเหตุผลมากกว่านี้ล่ะ? <? php $ var?> นั่นจะไม่ทำอะไรเลย (และเฉพาะในความเป็นไปได้ที่ห่างไกลที่สุดอาจขัดแย้งกับบางสิ่ง) และนั่นสามารถแทนที่ไวยากรณ์ที่น่าอึดอัดใจ <? = หรือหากเป็นปัญหาพวกเขาอาจใช้ <? php = $ var?> แทนและไม่ต้องกังวลกับความไม่สอดคล้องกัน

ณ จุดที่มี 4 ตัวเลือกสำหรับแท็กเปิดและปิดและการเพิ่มแท็ก "echo" แบบพิเศษนั้น PHP ก็อาจจะมีธง "แท็กเปิด / ปิดแบบกำหนดเอง" ใน php.ini หรือ. htaccess ด้วยวิธีนี้นักออกแบบสามารถเลือกสิ่งที่พวกเขาชอบที่สุด แต่ด้วยเหตุผลที่ชัดเจนว่าเกินความจริง เหตุใดจึงต้องมีตัวเลือก 4+


4

เป็นการดีที่จะใช้เมื่อคุณทำงานกับกรอบ MVC หรือ CMS ที่มีไฟล์มุมมองแยกต่างหาก
มันเร็วและโค้ดน้อยไม่ทำให้สับสนสำหรับนักออกแบบ เพียงตรวจสอบให้แน่ใจว่าการกำหนดค่าเซิร์ฟเวอร์ของคุณอนุญาตให้ใช้


4

สถานการณ์หนึ่งที่แตกต่างกันเล็กน้อยคือเมื่อพัฒนาแอปพลิเคชั่นCodeIgniter CodeIgniter ดูเหมือนว่าจะใช้ shorttags เมื่อใดก็ตามที่มีการใช้ PHP ในเทมเพลต / มุมมองมิฉะนั้นจะมีรุ่นและตัวควบคุมที่ใช้แท็กแบบยาวเสมอ มันไม่ใช่กฎที่ยากและรวดเร็วในกรอบ แต่ส่วนใหญ่แล้วเฟรมเวิร์กและแหล่งที่มาจำนวนมากจากการใช้อื่น ๆ จะเป็นไปตามอนุสัญญานี้

สองเซ็นต์ของฉัน หากคุณไม่เคยวางแผนที่จะเรียกใช้รหัสจากที่อื่นให้ใช้รหัสนี้หากคุณต้องการ ฉันไม่ต้องการทำการค้นหาจำนวนมากและแทนที่เมื่อฉันรู้ว่ามันเป็นความคิดที่โง่


4

<?ถูกปิดใช้งานโดยค่าเริ่มต้นในรุ่นที่ใหม่กว่า คุณสามารถเปิดใช้งานนี้เช่นอธิบายการเปิดใช้งานแท็กสั้นใน PHP


มันถูกปิดการใช้งานโดยค่าเริ่มต้นในรุ่นเก่าเช่นกัน
Pacerier

3

คน IMHO ที่ใช้แท็กสั้น ๆ มักจะลืมที่จะหลบหนีสิ่งที่พวกเขาสะท้อน มันจะดีถ้ามีเทมเพลตเอ็นจิ้นที่หนีออกไปตามค่าเริ่มต้น ฉันเชื่อว่า Rob A เขียนแฮ็คอย่างรวดเร็วเพื่อหลีกเลี่ยงแท็กสั้น ๆ ในแอป Zend Frameworks ถ้าคุณชอบแท็กสั้น ๆ เพราะจะทำให้ PHP อ่านง่ายขึ้น ถ้างั้น Smarty อาจเป็นตัวเลือกที่ดีกว่านี้?

{$myString|escape}

สำหรับฉันที่ดูดีกว่า

<?= htmlspecialchars($myString) ?> 

10
สำหรับโปรแกรมเมอร์ PHP ส่วนใหญ่ตัวเลือกที่สองเหมาะสมกว่าอย่างแรกเพราะมันเป็นฟังก์ชั่น PHP จริงที่เราคุ้นเคยในขณะที่ตัวเลือกแรกคือหลอกรหัสเทมเพลตที่เราต้องเรียนรู้จาก PHP PHP เป็นภาษาที่สร้างเทมเพลตแล้วการเพิ่มภาษาเทมเพลตอีกภาษาไว้ด้านบนเช่น Smarty นั้นเป็น IMO ที่ซ้ำซ้อน
Bug Magnet

3
Twig เป็นเอ็นจิ้น
mateusza

3

เราต้องถามว่าจุดใช้แท็กสั้นคืออะไร

พิมพ์เร็วกว่า

MDCore กล่าวว่า:

<?= สะดวกกว่าการพิมพ์ <?php echo

ใช่แล้ว. คุณบันทึกโดยไม่ต้องพิมพ์ 7 ตัวอักษร * X ตลอดทั้งสคริปต์

อย่างไรก็ตามเมื่อสคริปต์ใช้เวลาหนึ่งชั่วโมงหรือ 10 ชั่วโมงหรือนานกว่านั้นในการออกแบบพัฒนาและเขียนความเกี่ยวข้องสองสามวินาทีของเวลาที่ไม่พิมพ์ 7 ตัวอักษรเหล่านี้ที่นี่และในช่วงระยะเวลาของสคริปต์?

เปรียบเทียบกับความเป็นไปได้สำหรับสคริปต์หลักบางส่วนหรือทั้งหมดของคุณที่ไม่ทำงานหากไม่มีการเปิดใช้งานแท็กสั้น ๆ หรือเปิดอยู่ แต่เป็นการอัปเดตหรือมีคนเปลี่ยนการกำหนดค่าไฟล์ / เซิร์ฟเวอร์ ini ให้หยุดทำงานศักยภาพอื่น ๆ

ประโยชน์เล็ก ๆ น้อย ๆ ที่คุณได้รับนั้นไม่ได้มาจากการเทียบเคียงความรุนแรงของปัญหาที่อาจเกิดขึ้นนั่นคือเว็บไซต์ของคุณไม่ทำงานหรือแย่ลงเพียงบางส่วนของมันไม่ทำงานและทำให้ปวดหัวในการแก้ไข

อ่านง่ายกว่า

ซึ่งขึ้นอยู่กับความคุ้นเคย
ฉันเห็นและใช้<?php echoเสมอ ดังนั้นในขณะที่<?=ไม่ยากที่จะอ่านก็ไม่คุ้นเคยกับผมจึงไม่ได้ให้อ่านง่ายขึ้น

(เช่นเดียวกับ บริษัท ส่วนใหญ่) นักพัฒนาส่วนหน้าที่ทำงานกับเทมเพลตเหล่านี้จะคุ้นเคยมากกว่าที่รู้ว่า<?=เท่ากับ "PHP open tag and echo" หรือไม่?
ฉันจะบอกว่าส่วนใหญ่จะสะดวกสบายกับคนที่มีเหตุผลมากกว่า นั่นคือที่ชัดเจน PHP แท็กเปิดแล้วสิ่งที่เกิดขึ้น "ก้อง" <?php echo-

การประเมินความเสี่ยง
ฉบับที่ = เว็บไซต์หรือสคริปต์หลักทั้งหมดไม่ทำงาน;

ศักยภาพของปัญหาคือ ต่ำมาก + ความรุนแรงของผลลัพธ์สูงมาก = มีความเสี่ยงสูง

ข้อสรุป

คุณบันทึกไม่กี่วินาทีที่นี่และไม่ต้องพิมพ์ตัวอักษรสองสามตัว แต่เสี่ยงมากและอาจสูญเสียความสามารถในการอ่านได้

ตัวแปลงสัญญาณด้านหน้าหรือด้านหลังที่คุ้นเคยกับการ<?=มีแนวโน้มที่จะเข้าใจ<?php echoขณะที่พวกเขากำลัง PHP สิ่งมาตรฐาน - มาตรฐาน<?phpเปิดแท็กและเป็นที่รู้จักกันเป็นอย่างดี "ก้อง"
(แม้แต่โค้ดส่วนหน้าก็ควรรู้ "echo" มิเช่นนั้นจะไม่สามารถทำงานกับโค้ดใด ๆ ที่ให้บริการโดยเฟรมเวิร์ก)

ในขณะที่การย้อนกลับไม่เป็นไปได้บางคนไม่น่าจะอนุมานด้วยเหตุผลว่าเครื่องหมายเท่ากับในแท็กสั้น PHP คือ "echo"


มันไม่มีอะไรเกี่ยวข้องกับการพิมพ์ มันสั้นและจึงมีศักยภาพที่จะได้ง่ายต่อการอ่าน บุคคลที่ใช้ในการอ่าน<?=จะอ่าน<?=ได้ง่ายกว่าคนที่ใช้ในการอ่าน การอ่าน<?php echo <?php echo
Pacerier

@Pierier Shorter ไม่เพียง แต่ง่ายต่อการอ่าน เราต่างกัน สิ่งที่คุณหมายคือมันง่ายต่อการอ่านสำหรับคุณ ขณะที่ฉันตอบคำถามตามที่ฉันเคย<?phpเห็นว่าตลอดหลาย ๆ ครั้งฉันคุ้นเคยกับโค้ดมากกว่า<?=- ความคุ้นเคยทำให้ทุกอย่างง่ายขึ้น - ไม่จำเป็นต้องดีกว่า
James

ไม่มีฉันไม่ได้เปรียบเทียบคุณและฉันที่ฉันพูดเป็นคนที่ใช้ในการอ่าน<?=จะอ่าน<?=ดีกว่าคนที่ใช้ในการอ่านการอ่าน<?php echo <?php echoนั่นหมายความว่าถ้าเรามีสำเนาบุคคล X ที่เหมือนกันสองชุดและแก้ไขเฉพาะในกรณีที่มีการใช้การอ่าน<?=และอีกอันที่ใช้ในการอ่าน<?php echoสำเนาแรกสามารถบรรลุค่าxการอ่านได้ในขณะที่อ่านโดยใช้ไวยากรณ์ที่ต้องการ ขณะสำเนาที่สองสามารถบรรลุค่าอ่านเมื่ออ่านไวยากรณ์ที่ต้องการของเขาที่y x >= y
Pacerier

ไม่มีคุณพลาดจุด ฉันหมายถึงศักยภาพของระบบซึ่งไม่มีส่วนเกี่ยวข้องกับบุคคลใดบุคคลหนึ่ง คุณสามารถพูดได้ว่าคนที่เคยพิมพ์ด้วย qwerty keyboard จะพิมพ์เร็วขึ้นด้วย qwerty ในขณะที่คนที่เคยพิมพ์ด้วย dvorak จะพิมพ์เร็วขึ้นด้วย dvorak แต่ความจริงไม่เปลี่ยนว่าทั้งสองระบบมีศักยภาพแตกต่างกัน
Pacerier

3

ลองหน้ากันเถอะ PHP น่าเกลียดเหมือนไม่มีแท็กสั้น ๆ

คุณสามารถเปิดใช้งานพวกเขาใน.htaccessไฟล์หากคุณไม่สามารถไปที่php.ini:

php_flag short_open_tag on

3
เท็จ บางครั้งเซิร์ฟเวอร์ถูกกำหนดให้ปฏิเสธการเอาชนะใด ๆ
Alfabravo

17
จริง แต่ถ้าโฮสต์ของคุณไม่อนุญาตให้คุณแทนที่ด้วย htaccess คุณต้องมีโฮสต์ใหม่! :)
Brian Lacy

1
ไม่ทำงานบนอินเตอร์เฟสบรรทัดคำสั่งและ php_flag ไม่ได้รับการสนับสนุนตลอดเวลา
Elvis Ciotti

3

เพื่อหลีกเลี่ยงปัญหาการพกพาให้เริ่มต้นแท็ก PHP ด้วย<?phpและในกรณีที่ไฟล์ PHP ของคุณเป็น PHP ล้วนๆไม่มี HTML คุณไม่จำเป็นต้องใช้แท็กปิด


2
  • แท็กสั้น ๆ สามารถใช้ได้ในกรณีที่คุณมั่นใจว่าเซิร์ฟเวอร์จะรองรับและผู้พัฒนาของคุณจะเข้าใจ
  • เซิร์ฟเวอร์จำนวนมากไม่รองรับและนักพัฒนาหลายคนจะเข้าใจหลังจากเห็นครั้งเดียว
  • ฉันใช้แท็กเต็มรูปแบบเพื่อให้มั่นใจในการพกพาเนื่องจากมันไม่ได้แย่ขนาดนั้น

ด้วยที่กล่าวว่าเพื่อนของฉันกล่าวว่าสิ่งนี้ในการสนับสนุนแท็กสไตล์ asp มาตรฐานอื่นๆ<%แทนที่จะ<?เป็นซึ่งเป็นการตั้งค่าใน php.ini ที่เรียกว่า asp_tags นี่คือเหตุผลของเขา:

... การประชุมโดยพลการควรจะได้มาตรฐาน นั่นคือทุกครั้งที่เราเผชิญกับชุดของความเป็นไปได้ที่มีค่าเท่ากัน - เช่นเครื่องหมายวรรคตอนที่แปลก ๆ ภาษาโปรแกรมของเราควรใช้เพื่อกำหนดเขตเอง - เราควรเลือกวิธีมาตรฐานและติดกับมัน ด้วยวิธีนี้เราลดช่วงการเรียนรู้ของทุกภาษา (หรือสิ่งที่เกี่ยวข้องกับการประชุม)

ฟังดูดีสำหรับฉัน แต่ฉันไม่คิดว่าเราคนใดจะวนรอบเกวียนรอบสาเหตุนี้ <?phpในขณะเดียวกันผมจะติดเต็ม


2

ฉันคิดว่ามันคุ้มค่าที่จะกล่าวถึงตั้งแต่ PHP 7:

  • แท็ก PHP PHP แบบสั้น <% … %>หายไป
  • แท็บ PHP แบบสั้น<? … ?>จะยังคงมีให้ถ้าshort_open_tagตั้งค่าเป็นจริง นี่คือค่าเริ่มต้น
  • ตั้งแต่ PHP 5.4 แท็กพิมพ์สั้น<?=… ?>จะเปิดใช้งานเสมอโดยไม่คำนึงถึงการshort_open_tagตั้งค่า

ดีกับคนแรกเพราะมันรบกวนภาษาอื่น

ขณะนี้ไม่มีเหตุผลที่จะไม่ใช้แท็กพิมพ์สั้น ๆ นอกเหนือจากการตั้งค่าส่วนตัว

แน่นอนถ้าคุณกำลังเขียนโค้ดเพื่อให้เข้ากันได้กับ PHP 5 รุ่นเก่าคุณจะต้องปฏิบัติตามกฎเดิม แต่จำไว้ว่าไม่มีสิ่งใดก่อน PHP 5.6 ที่ได้รับการสนับสนุน

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


1
จุดแรกของคุณไม่ถูกต้องเว้นแต่ว่าฉันเข้าใจผิด เอกสารบอกว่าแท็ก ASP ไม่ใช่แท็ก PHP สั้น ๆ หายไปจาก PHP 7.0.0
ปรับปรุงใหม่

@reformed คุณถูกต้องอย่างแน่นอน ฉันจะแก้ไขคำตอบของฉัน ขอบคุณ
Manngo

1

หากคุณสนใจXSSคุณควรใช้<?= htmlspecialchars(…) ?>เวลาส่วนใหญ่ดังนั้นแท็กสั้น ๆ ไม่ได้สร้างความแตกต่างอย่างมาก

แม้ว่าคุณecho htmlspecialchars()จะสั้นลงh()แต่ก็ยังคงเป็นปัญหาที่คุณต้องจำไว้ว่าให้เพิ่มเกือบทุกครั้ง (และพยายามติดตามว่าข้อมูลใดที่ได้รับการหลบหนีล่วงหน้าซึ่งไม่มีการหลีกเลี่ยง

ฉันใช้เครื่องมือสร้างเทมเพลตที่ปลอดภัยโดยค่าเริ่มต้นและเขียน<?phpแท็กให้ฉัน


7
หากคุณพบว่าคุณพิมพ์ "<? php echo htmlspecialchars ($ text, ENT_QUOTES, 'UTF-8');?> 500 ครั้งต่อวันคุณอาจต้องการสร้างฟังก์ชั่นทางลัดชื่อ" h "เช่น Rails มี .. " < ? = h ($ text)?> "สามารถอ่านได้มากขึ้นเมื่อสแกนเทมเพลต
Alexander Malfait

1
มันดีกว่าแน่นอน แต่ด้วยเครื่องมือเทมเพลตมันอาจเป็นเพียง $ {text} หรืออย่างนั้น (และคุณไม่ต้องจำที่จะเพิ่ม h ())
Kornel

7
PHP นั้นเป็นเครื่องมือสร้างแรงบันดาลใจ เมื่อคุณหยุดใช้แท็กสั้น ๆ มันเริ่มจะเป็นเครื่องมือสร้างเท็มเพลตที่ไม่ดีเนื่องจากมันกลายเป็น verbose มากเกินไป
Josef Sábl

1
@Alexander Malfait นั่นเป็นคำแนะนำที่ดี แต่ไม่ต้องการ <? = คุณสามารถทำให้ฟังก์ชั่นดังก้องสตริงแทนที่จะส่งคืนดังนั้นคุณจะเขียน <? php h ('hello')?> เราไม่ได้ทำอย่างนั้นเมื่อเรา de i18n? <? php _e ('')?> นั้นไม่เลว
VladFr

1

<?php ?>ใช้งานได้ดีกว่ามากเนื่องจากผู้พัฒนาภาษาการเขียนโปรแกรมนี้ได้อัปเดตภาษาหลักของตนอย่างหนาแน่น คุณสามารถเห็นความแตกต่างระหว่างแท็กสั้นและแท็กแบบยาว

แท็กสั้น ๆ จะถูกเน้นเป็นสีแดงอ่อนในขณะที่อีกต่อไปจะถูกเน้นเข้ม!

อย่างไรก็ตามการสะท้อนบางสิ่งออกมาตัวอย่างเช่น: <?=$variable;?>ใช้ได้ แต่ชอบแท็กที่ยาวกว่า<?php echo $variable;?>


1

แปลง<?(โดยไม่มีช่องว่างต่อท้าย) เป็น<?php(ด้วยช่องว่างต่อท้าย):

find . -name "*.php" -print0 | xargs -0 perl -pi -e 's/<\?(?!php|=|xml|mso| )/<\?php /g'

แปลง<?(ด้วยช่องว่างต่อท้าย) เป็น<?php(รักษาพื้นที่ต่อท้าย):

find . -name "*.php" -print0 | xargs -0 perl -pi -e 's/<\? /<\?php /g'

1

แท็กสั้น ๆ จะพร้อมใช้งานใน php ดังนั้นคุณไม่จำเป็นต้อง echo คำสั่งแรกในสคริปต์ของคุณ

ตัวอย่าง:

    $a =10;
    <?= $a;//10 
    echo "Hellow";//
    echo "Hellow";

   ?>

ทันใดนั้นคุณต้องใช้สคริปต์ php เพียงครั้งเดียวจากนั้นคุณสามารถใช้งานสคริปต์นี้ได้ ตัวอย่าง:

<html>
<head>
<title></title>
</head>  
<body>
<p>hellow everybody<?= hi;?></p>
<p>hellow everybody  </p> 
<p>hellow everybody  </p>   
</body>
</html>

1

ตั้งแต่ 2019 ฉันไม่เห็นด้วยกับคำตอบบางอย่างที่นี่ ฉันแนะนำให้ใช้แท็กยาว ๆ

<?php /* code goes here */ ?>

หรือแท็ก echo สั้น ๆ

<?= /* code goes here */ ?>

เหตุผล: แนะนำโดยมาตรฐานการเข้ารหัสพื้นฐาน PSR-1

<? /* code goes here */ ?>ไม่แนะนำให้ใช้แท็กสั้นอื่น ๆ

ข้อมูลจำเพาะพูดว่า:

โค้ด PHP ต้องใช้แท็กยาวหรือแท็กสั้น ๆ มันไม่ต้องใช้รูปแบบแท็กอื่น


1

3 แท็กพร้อมใช้งานใน php:

  1. แท็กแบบยาวที่<?php ?>ไม่จำเป็นต้องสั่งการกำหนดค่าใด ๆ
  2. short_open_tag ที่<? ?> ใช้ได้หากตัวเลือก short_open_tag ใน php.ini เปิดอยู่
  3. แท็กสั้นลง<?= ตั้งแต่ php 5.4.0 มันใช้ได้เสมอ

จาก php 7.0.0 asp และแท็กสคริปต์จะถูกลบ


ไม่ตอบคำถาม
RalfFriedl

-5

ไม่และพวกมันจะถูกเลิกใช้งานโดย PHP 6ดังนั้นหากคุณพอใจกับอายุการใช้งานที่ยาวนานของรหัสคุณไม่ควรใช้มันหรือ<% ... %>แท็ก


4
ฉันเคยเห็นโพสต์บล็อกอื่น ๆ ที่บอกว่าพวกเขาจะไม่เลิกใช้เพียงแค่แท็กสั้น ๆ สไตล์ ASP
MDCore

22
ดูเหมือนว่าคำตอบนี้ไม่ถูกต้องตามลิงค์นี้จากที่ประชุมนักพัฒนา PHP: php.net/~derick/...
ชาร์ลส์

7
ทำไมพวกเขาถึงแย่ขนาดนี้ทำไมล่ะ? ทุกคนมีความมั่นใจในตนเองเป็นอย่างมาก แต่ไม่มีใครบอกว่าทำไม
Josef Sábl

6
FALSE พวกเขากำลังวางแท็ก <%%> ออกตามที่ควร พวกเขาไม่มีจุดประสงค์ แต่เพื่อให้เกิดความสับสน The <? ?> แท็กจะไม่ได้รับผลกระทบ แต่แน่นอนว่าพวกเขายังคงสามารถกำหนดค่าบนพื้นฐานต่อเซิร์ฟเวอร์และคุณควรตระหนักถึงความต้องการของแพลตฟอร์มเป้าหมายของคุณ
Brian Lacy

6
ข้อมูลนี้ดูเหมือนจะไม่ถูกต้องและทำให้เข้าใจผิดและควรแก้ไขโดยผู้เขียน
tex
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.