Если в функции нет аргументов, как мне проверить, не указано ли это? - PullRequest
0 голосов
/ 03 апреля 2009
<?php    
/* Copyright Date
--------------------------*/
function copyright_date($creation_year) {
    $current_year = date('Y');

    if ($creation_year == $current_year || $creation_year == '') {
        echo $current_year;
    } 
    else {
        echo $creation_year . '-' . $current_year;
    }           
}
?>

Если кто-то забудет добавить аргумент (год создания сайта), например,

<?php copyright_date(); ?>

вместо:

<?php copyright_date(2009); ?>

как мне проверить, был ли аргумент оставлен пустым? В моем операторе if это то, для чего предназначен $ creation_year == '', но поскольку аргумент не является строкой, он не не работает.

Ответы [ 3 ]

4 голосов
/ 03 апреля 2009

Сделать $creation_year необязательным аргументом со значением по умолчанию NULL.

function copyright_date($creation_year=NULL) {

Теперь внутри функции просто проверьте, равен ли $creation_year NULL, что произойдет, когда функция вызывается без аргументов.

1 голос
/ 03 апреля 2009

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

if ($creation_year == $current_year || !isset($creation_year)){
 //...
}
0 голосов
/ 29 августа 2013

Если кому-то нужны дополнительные разъяснения по ответу:

Вы можете попытаться установить параметры функции в NULL. Это установит значение переменной (в вашем случае $ creation_year) в пустую переменную. Переменная была объявлена, но не содержит значения. Когда функция вызывается так:

<?php copyright_date();  ?>

Ваша функция выполнит код в блоке else.

Если функция вызывается другим способом (с предоставленным аргументом), например:

 <?php copyright_date($creation_year);  ?>

Указанный аргумент заменяет значение NULL, и выполняется код в блоке If.

Учитывая это, вам также нужно иметь это:

|| $creation_year == NULL

В вашем условии if. Это проверит, является ли значение $ creation_year пустым.

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