为什么函数的最后一个参数没有得到它的值


Why is the last parameter of a function is not getting its value?

我花了很多时间在生产环境中解决这个问题。在QA, UAT和DEV环境中,这是正常工作的。好像是跟服务器有关。以下是我所做的细节。

我添加了更多的字段到一个现有的函数与默认值,并测试了NULL和"作为默认值。

    public function test($a, $b, $c = '')
    public function test($a, $b, $c = NULL)

当我调用这个函数时,最后一个参数没有得到它的值。当我在日志文件中打印参数时,我得到最后一个参数的默认值,即NULL,而不是实际值。我正在使用Zend框架1。

下面是将参数写入日志文件的代码。我在函数开始的行下面添加了

     $arg_list = func_get_args();
     Sg_Log_Manager::info(print_r($arg_list , true));
有谁能帮我吗?

首先,在你的描述中你提到一个默认值为NULL,但在你的源代码中你有一个默认值为空字符串"。那就不一样了!

func_get_args()的文档状态:

此函数仅返回传递的参数的副本,而不考虑默认(未传递的)参数。