باستخدام الثوابت كقيم وظيفة الافتراضي في PHP

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

  •  22-07-2019
  •  | 
  •  

سؤال

هل هذا قانوني؟

<?php

function ftw($foo = 'pwnage', $nub = MENU_DEFAULT_VALUE, $odp = ODP_DEFAULT_VALUE) {
      //lots_of_awesome_code
}

?>

وحيث MENU_DEFAULT_VALUE وODP_DEFAULT_VALUE والثوابت المحددة سابقا في الملف.

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

المحلول

نعم، هذا هو قانوني.

دليل على :

<اقتباس فقرة>   

ويجب أن تكون القيمة الافتراضية ثابت   التعبير، وليس (على سبيل المثال) ل   متغير عضو فئة أو وظيفة   استدعاء.

والثوابت تناسب مشروع القانون تماما.

نصائح أخرى

في سياق OOP، يمكنك أيضا استخدام ثابت عضو فئة كقيمة الأسلوب الافتراضي حجة.

class MyClass
{
    const A = 1;

    public function __construct($arg = self::A)
    {
        echo $arg;
    }
}

لماذا لا نحاول؟

ومع ذلك، فقط في حالة يمكنك اختبار في الوقت الراهن، التعليمة البرمجية التالية:

define('MENU_DEFAULT_VALUE', 10);
define('ODP_DEFAULT_VALUE', 'hello');

function ftw($foo = 'pwnage', $nub = MENU_DEFAULT_VALUE, $odp = ODP_DEFAULT_VALUE) {
    var_dump($foo);
    var_dump($nub);
    var_dump($odp);
}

ftw();

ويعطي هذا الناتج:

string 'pwnage' (length=6)
int 10
string 'hello' (length=5)

وهكذا أود أن أقول أن، نعم، لم يصح: -)

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