Использование констант в качестве значений функции по умолчанию в PHP Является ли это законным? <?php function ftw($foo = 'pwnage', $nub = MENU_DEFAULT_VALUE, $odp = ODP_DEFAULT_VALUE) { //lots_of_awesome_code } ?> где MENU_DEFAULT_VALUE и ODP_DEFAULT_VALUE - константы, определенные ранее в файле. Ответ 1 Да, это законно. Из руководство: Значение по умолчанию должно быть константой выражение, а не (например) a переменная, член класса или функция звоните. Константы идеально подходят к этому счету. Ответ 2 почему бы вам не попробовать? Тем не менее, на всякий случай вы можете проверить прямо сейчас, следующий код: 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) Итак, я бы сказал, что да, это действительно: -) Ответ 3 В контексте ООП вы также можете использовать константу члена класса как значение аргумента метода по умолчанию. class MyClass { const A = 1; public function __construct($arg = self::A) { echo $arg; } }
Ответ 1 Да, это законно. Из руководство: Значение по умолчанию должно быть константой выражение, а не (например) a переменная, член класса или функция звоните. Константы идеально подходят к этому счету.
Ответ 2 почему бы вам не попробовать? Тем не менее, на всякий случай вы можете проверить прямо сейчас, следующий код: 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) Итак, я бы сказал, что да, это действительно: -)
Ответ 3 В контексте ООП вы также можете использовать константу члена класса как значение аргумента метода по умолчанию. class MyClass { const A = 1; public function __construct($arg = self::A) { echo $arg; } }