为什么我可以在php中设置默认参数值但没有新对象?

时间:2016-08-31 03:53:35

标签: php function object

例如,我有以下内容:

public function foo($integer = 1; $myObj = new myClass()){}

"解析错误:语法错误,意外'新' (T_NEW)在C:\ xampp \ htdocs ..."

1 个答案:

答案 0 :(得分:1)

必须在编译时评估函数原型。在您进入运行时之前,无法知道new myClass是什么,因为我们需要定义类及其所有祖先才能构建它以及执行此操作所需的任何其他运行时信息。 / p>

您仍然可以在函数中设置默认参数,以便将赋值延迟到运行时。

class myClass {
    public function foo($integer = 1, myClass $myObj = null) {
        if (!$myObj) {
            $myObj = new myClass;
        }
    }
}

另请注意,您的函数原型中存在语法错误。参数分隔符是逗号,,而不是分号;