ما هي أقصر طريقة لإدراج متغير في النص باستخدام PHP؟

StackOverflow https://stackoverflow.com/questions/1219008

  •  10-07-2019
  •  | 
  •  

سؤال

أتساءل عما إذا كانت هناك طريقة أقصر لإدراج النص في PHP من

<?php
$city = "London";
?>
This website is a funky guide to <?php print $city; ?>!!!

على سبيل المثال، باستخدام روبي على القضبان، يمكنني تعيين

city = 'London'

في مكان ما في الكود، وفي ملف .erb الخاص بي، يمكنني القيام بذلك

This website is a funky guide to <%= city %>!!!

لقد قرأت ذلك في مكان ما {$city} يمكن استخدامه لكني جربته ولم يحدث ذلك.فهل هناك شكل أقصر من <?php print $var; ?> ?

هل كانت مفيدة؟

المحلول

يمكنك استخدام short_open_tag, ، والتي يجب تمكينها في التكوين الخاص بك، ولكن هذا لا يعتبر ممارسة جيدة، لأنه يعمل فقط إذا تم تمكينها - ولا يتم تمكينها دائمًا (وربما ليس حتى بشكل افتراضي)

قد يكون استخدام العلامات الطويلة والصدى/الطباعة أطول، نعم...لكنني أوصي باستخدام تلك العلامات، وليس العلامات القصيرة.


لاحظ أيضًا أنك قد تحتاج إلى الهروب من بياناتك، عندما تأتي من مصدر غير موثوق به و/أو قد تحتوي على HTML لا ترغب في إدراجه في الصفحة، لتجنب إدخال HTML/JS (يرى htmlspecialchars) :


قم بالتحرير بعد التعليقات، لإضافة شيئين حول short_open_tag :

لماذا يتم أخذ العلامات المفتوحة القصيرة بعين الاعتبار؟ (على الأقل مني ^^) سوء الممارسة ؟

أولاً، بعد بعض التدقيق، لم يتم تمكينها افتراضيًا:

ل PHP 5.3 :

squale@shark:~/temp/php/php-5.3.0
$ grep 'short_open_tag' php.ini-development
; short_open_tag
short_open_tag = Off
squale@shark:~/temp/php/php-5.3.0
$ grep 'short_open_tag' php.ini-production
; short_open_tag
short_open_tag = Off

معطل افتراضيًا في أي منهما "development" أو "production" إعدادات.

ل PHP 5.2.10 (أحدث إصدار من PHP 5.2) :

squale@shark:~/temp/php/php-5.2.10
$ grep 'short_open_tag' php.ini-dist
short_open_tag = On
squale@shark:~/temp/php/php-5.2.10
$ grep 'short_open_tag' php.ini-recommended
; - short_open_tag = Off           [Portability]
short_open_tag = Off

معطل افتراضيًا في "recommended" إعدادات


النظر في هذه الإعدادات الافتراضية في بعض الأحيان (غالباً ؟) التي تحتفظ بها خدمات الاستضافة، فمن الخطورة الاعتماد عليها short_open_tag يجري تفعيلها.
(لقد واجهت نفسي مشكلة مع هؤلاء المعوقين ...وعندما لا تكون مسؤولاً عن الخادم وليس لديك الامتيازات المطلوبة لتعديل ذلك، فهذا ليس ممتعًا ^^)

إذا كنت تريد بعض الأرقام، يمكنك إلقاء نظرة عليها استطلاع سريع: short_open_tag دعم أو إيقاف تشغيله بشكل افتراضي؟
(ليس دليلاً علميًا - ولكن أظهر أنه قد يكون من الخطورة استخدام تلك الأشياء في تطبيق قد تطلقه للعامة)


كما قلت، تتعارض هذه العناصر، عند تنشيطها، مع إعلان XML - مما يعني أنه يتعين عليك استخدام شيء مثل هذا:

<?php echo '<?xml version="1.0" encoding="UTF-8" ?>'; ?>

نظرًا لوجود علامات مفتوحة قصيرة، وربما يتم تنشيطها على الخادم الذي ستستخدمه، فمن المحتمل ألا تستخدمها <?xml على الرغم من أي وقت مضى ؛سيئة للغاية :-(


في الواقع، قراءة ملف php.ini الموصى به لـ PHP 5.2.10 :

; Allow the <? tag.  Otherwise, only <?php and <script> tags are recognized.
; NOTE: Using short tags should be avoided when developing applications or
; libraries that are meant for redistribution, or deployment on PHP
; servers which are not under your control, because short tags may not
; be supported on the target server. For portable, redistributable code,
; be sure not to use short tags.

يعد الإصدار من PHP 6 أكثر إثارة للاهتمام:

; This directive determines whether or not PHP will recognize code between
; <? and ?> tags as PHP source which should be processed as such. It's been
; recommended for several years that you not use the short tag "short cut" and
; instead to use the full <?php and ?> tag combination. With the wide spread use
; of XML and use of these tags by other languages, the server can become easily
; confused and end up parsing the wrong code in the wrong context. But because
; this short cut has been a feature for such a long time, it's currently still
; supported for backwards compatibility, but we recommend you don't use them.

(قد يكون هو نفسه في PHP 5.3؛لم تحقق)


كانت هناك شائعات يمكن إزالة العلامات المفتوحة القصيرة من PHP 6؛بالنظر إلى جزء php.ini الذي قمت بنشره للتو، فمن المحتمل ألا يكون...لكن مازال...


لإعطاء حجة تشير إلى الاتجاه الآخر (يجب أن أكون صادقًا، بعد كل شيء):باستخدام العلامات المفتوحة القصيرة لملفات القالب (فقط) هو شيء يتم إجراؤه غالبًا في أمثلة Zend Framework التي تستخدم ملفات القالب:

في أمثلةنا ووثائقنا ، نستخدم علامات PHP القصيرة:

ومع ذلك ، يفضل العديد من المطورين استخدام العلامات الكاملة لأغراض التحقق من الصحة أو قابلية النقل.على سبيل المثال ، يتم تعطيل Short_open_tag في ملف php.ini.Rected ، وإذا قمت بإعداد XML في عرض البرامج النصية ، فإن العلامات المفتوحة القصيرة ستؤدي إلى فشل التحقق من صحة القوالب.

(مصدر)

على العكس من ذلك، ل .php الملفات :

العلامات القصيرة غير مسموح بها أبدًا.بالنسبة للملفات التي تحتوي على رمز PHP فقط ، يجب دائمًا حذف علامة الإغلاق

(مصدر)


آمل أن تكون هذه المعلومات مفيدة، وأن تقدم نوعًا من الإجابة على تعليقك :-)

نصائح أخرى

إذا قمت بالتبديل من وضع PHP، فإن الطريقة الوحيدة لطباعة متغير هي للرجوع اليها، وطباعته وكأنه لديك أعلاه. هل يمكن البقاء في وضع PHP واستخدام البناء {} حاولت:

<?php
$city = "London";
echo "This website is a funky guide to {$city}!!!";
?>
<اقتباس فقرة>   

وأنا لم أقرأ في مكان ما أن {$ المدينة} يمكن أن تستخدم

إذا كنت اذهب لمحرك النموذجيه مثل هندى يمكنك القيام بذلك. قد يكون من المفيد إذا كنت النامية في فريق وبعض منهم لا يعرفون PHP.

وإلا فإن أقصر سوف تحصل عليه هو ما يلي، على افتراض لديك علامات قصيرة مكنت:

<?=$city?>

إذا لم تقم بذلك، أو إذا كنت تقوم بإنشاء برنامج لإعادة توزيع للآخرين، ثم استخدام هذا:

<?php echo $city ?>

ومجرد توسيع كتلة PHP وقيام بذلك:

<?php
$city = 'London';
echo 'This website is a funky guide to ',$city,' !!!';
?>

وبدلا من ذلك، يمكنك استخدام "" بدلا من '' واستبدال ',$city,' مع $city، لكنه يأخذ مزيدا من الوقت وحدة المعالجة المركزية إلى تحليل للمتغيرات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top