尝试创建一个带有单个可选参数的函数时,我有点困惑。而不是这是一个字符串,我希望它是一个函数的结果(甚至更好,一个DateTime对象)。本质上 - 如果没有提供参数,我希望用户传入DateTime对象,或者让函数求助于今天的日期。这可能用PHP吗?通过尝试在函数头中创建新对象
function myDateFunction($date = new DateTime()){
//My function goes here.
}
导致PHP倒闭。
非常感谢。
答案 0 :(得分:5)
默认值必须是常量表达式,而不是(例如)变量,类成员或函数调用。
http://php.net/manual/en/functions.arguments.php#example-154
答案 1 :(得分:5)
是。如果将$date
实例化移动到函数体:
<?php
header('Content-Type: text/plain');
function myDateFunction(DateTime $date = null){
if($date === null){
$date = new DateTime();
}
return $date->format('d.m.Y H:i:s');
}
echo
myDateFunction(),
PHP_EOL,
myDateFunction(DateTime::createFromFormat('d.m.Y', '11.11.2011'));
?>
结果:
15.09.2013 17:25:02
11.11.2011 17:25:02
来自php.net:
键入提示允许NULL值
答案 2 :(得分:2)
你可以这样做:
function myDateFunction($date = null){
if(is_null($date) || !($date instanceof DateTime)) {
$date = new DateTime();
}
return $date;
}
var_dump(myDateFunction());
答案 3 :(得分:1)
您可以使用其他选项:
function myDateFunction($date = null){
if(is_null($date)) $date = new DateTime();
}
答案 4 :(得分:1)
function myDateFunc($date = null){
if(!isset($date) || $date !instanceof DateTime){
$date = new DateTime()
}
/* YOur code here*/
}
答案 5 :(得分:0)
对于函数中的可选参数,您可以编写类似
的代码function myDateFunction($date = ''){
//My function goes here.
if($date==''){ $date = new DateTime()}
}
希望有所帮助