سؤال

تكرار ممكن: ما هي مشغلي PHP "؟" و ":" دعا وماذا يفعلون؟

من عند http://twitto.org/

<?PHP
    require __DIR__.'/c.php';
    if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Woah!'; }))
        throw new Exception('Error');
    $c();
?>

يستخدم Twitto العديد من الميزات الجديدة المتاحة اعتبارًا من PHP 5.3:

  1. ال دير ثابت
  2. ؟: عامل
  3. وظائف مجهولة

  1. ماذا يفعل الرقم 2 مع ?: في PHP 5.3؟

  2. أيضا ، ماذا يعنيون من خلال وظائف مجهولة؟ ألم يكن هذا شيء موجود لفترة من الوقت؟

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

المحلول

?: هو شكل من أشكال المشغل الشرطي الذي كان متاحًا سابقًا فقط على النحو التالي:

expr ? val_if_true : val_if_false

في 5.3 من الممكن ترك الجزء الأوسط ، على سبيل المثال expr ?: val_if_false وهو ما يعادل:

expr ? expr : val_if_false

من كتيب:

منذ PHP 5.3 ، من الممكن ترك الجزء الأوسط من المشغل الشرطي. تعبير expr1 ?: expr3 عائدات expr1 لو expr1 يقيم TRUE, ، و expr3 غير ذلك.

نصائح أخرى

ال ?: المشغل هو المشغل الشرطي (يشار إليها غالبًا باسم المشغل الثلاثية):

التعبير (expr1) ? (expr2) : (expr3) يقيم expr2 لو expr1 يقيم صحيح, ، و expr3 لو expr1 يقيم خاطئة.

في حالة:

expr1 ?: expr2

يقيم التعبير إلى قيمة expr1 لو expr1 هو حقيقي و expr2 غير ذلك:

منذ PHP 5.3 ، من الممكن ترك الجزء الأوسط من المشغل الثلاثي. تعبير expr1 ?: expr3 عائدات expr1 لو expr1 يقيم صحيح, ، و expr3 غير ذلك.

انظر هنا:

منذ PHP 5.3 ، من الممكن ترك الجزء الأوسط من المشغل الثلاثي. Expr1؟: إرجاع expr3 expr1 إذا كان expr1 يقيم إلى صواب ، و expr3 خلاف ذلك.

وظائف مجهولة: لا ، لم تكن موجودة قبل 5.3.0 (انظر الملاحظة الأولى أدناه الأمثلة) ، على الأقل بهذه الطريقة:

function ($arg) { /* func body */ }

كانت الطريقة الوحيدة create_function(), ، وهو أبطأ ، مرهق للغاية ومعرض للخطأ (بسبب استخدام سلاسل لتعريفات الوظائف).

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