PHP: передать внутреннюю функцию date() в качестве параметра функции?

Интересно, возможно ли это как-то...

function get_event_list( $year = date('Y') ) {

    }

Так что я мог бы назвать эту функцию как get_event_list(2012), но без добавления пара всегда извлекает все события текущего года (2014);

С наилучшими пожеланиями, Мэтт

4 ответа

Решение

Вы можете сделать параметр обнуляемым следующим образом:

function get_event_list( $year = NULL ){
  $year = is_null( $year) ? date('Y') : $year;
  //Code here
}

Способ для вызова этой функции будет get_event_list(2012) или же get_event_list()

Лучший способ добиться этого - это:

function get_event_list( $year = null ) {
    if ( is_null($year) ) {
        $year = date('Y');
    }
}

Вы не можете использовать встроенную функцию в качестве аргумента по умолчанию.

Из руководства по PHP:

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

То, что вам нужно, может быть достигнуто следующим образом:

function get_event_list($year = null) {
    if(!isset($year)) {
        $year = date('Y');
    }
}

Вы можете сделать это так

function get_even_list($year = ""){
    if(empty($year)){
        $year = date('Y');
    }

    // Whatever you wann do here
}

Стив

Другие вопросы по тегам