Использование констант в качестве значений функций по умолчанию в PHP - PullRequest
17 голосов
/ 04 августа 2009

Это законно?

<?php

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

?>

, где MENU_DEFAULT_VALUE и ODP_DEFAULT_VALUE - константы, определенные ранее в файле.

Ответы [ 3 ]

23 голосов
/ 04 августа 2009

Да, это законно.

С инструкция :

Значение по умолчанию должно быть константой выражение, а не (например) переменная, член класса или функция позвонить.

Константы отлично вписываются в этот счет.

14 голосов
/ 01 августа 2016

В контексте ООП вы также можете использовать константу члена класса в качестве значения аргумента метода по умолчанию.

class MyClass
{
    const A = 1;

    public function __construct($arg = self::A)
    {
        echo $arg;
    }
}
10 голосов
/ 04 августа 2009

почему бы тебе не попробовать?

Тем не менее, на всякий случай, вы можете проверить прямо сейчас, следующий код:

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)

Так что я бы сказал, что да, это действительно так: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...