Могу ли я использовать функцию в качестве значения по умолчанию для аргумента в другой функции? В приведенном ниже примере я пытаюсь использовать функцию WordPress get_the_title()
в качестве значения по умолчанию:
function GetPageDepartment($department = get_the_title()) {
return $department;
}
Как есть, скобки вызывают ошибку разбора. Есть ли способ обойти это, или я должен был бы передать значение функции в переменную где-то за пределами значений по умолчанию?
Я знаю, что реальный код здесь будет в значительной степени бессмысленным, поскольку он просто возвращает get_the_title()
, но это просто в качестве примера, поскольку то, что я на самом деле делаю с аргументом, не имеет отношения к вопросу.
Ответ «нет и да, но … пока …».
Нет, используя PHP 5.6, вы не можете назначить функцию в качестве значения по умолчанию для функции / метода.
Да, вы можете назначить строку, и если вы используете этот параметр / переменную в контексте функции, т.е. echo $department();
строка будет рассматриваться как имя функции и get_the_title()
будет вызван. Но … довольно уродливо, что вам приходится полагаться на отношение строка-> имя функции. Еще … кого это волнует?
редактировать: на ваше рассмотрение ….
<?php
function get_the_title() { return "the title"; }
function GetPageDepartment( callable $department=null ) {
if ( null==$department ) {
$department = 'get_the_title';
}
return '<'.$department().'>';
}echo GetPageDepartment();
Нет ты не можешь
используйте этот код
<?php
function get_the_title(){
return 'this is the title';
}
$temp = get_the_title();
function GetPageDepartment($department) {
echo $department;
}
GetPageDepartment($temp);
В конце концов я набрался:
function GetPageDepartment($department = null) {
$department = $department ?: get_the_title(); //Sets value if null.
}
который устанавливает значение $ Department равным get_the_title (), если не установлено другое значение.