باستخدام الثوابت كقيم وظيفة الافتراضي في PHP
سؤال
هل هذا قانوني؟
<?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)
وهكذا أود أن أقول أن، نعم، لم يصح: -)
لا تنتمي إلى StackOverflow