2016-11-16 56 views
1

我注意到在95%的情况下,在PHP_FUNCTION之内评估zend_parse_parametersFAILURE之后始终只有return;。它没有任何意义,因为PHP_FUNCTION预计会返回ZVAL。我不确定什么默认值return_value是什么时候没有明确设置。zend_parse_parameters应从PHP_FUNCTION内部返回zval

我搜索了所有php源代码以及与php捆绑在一起的所有扩展源。在95%的情况下,他们只是使用回报。在一些扩展 - dateintl他们做RETURN_FALSE。在由莎拉科尔蒙写的an article她使用RETURN_NULL()

我强烈地感到我应该使用RETURN_FALSE对于PHP_FUNCTION s更有意义的大多数情况。我在某处错过了什么吗?

回答

1

如果zend_parse_parameters()失败,通常只需要return。也就是说documented in the PHP manual

如果zend_parse_parameters没有收到什么是黑客为正确的参数指定的,收到的参数不能转换与type_spec错误,以符合将提高,而按照惯例,黑客应该return立即。

According to the PHP manual,的return_value默认为IS_NULL类型:

指针,该可填充有传递给用户的返回值的变量PHP。默认类型是IS_NULL。

此外,PHP manual notes

如果传递给功能的参数是不是预计,例如使其中一个字符串被预期的阵列,该函数的返回值是未定义的。在这种情况下,它可能会返回NULL,但这只是一个约定,不能被依赖。

所以未能zend_parse_parameters()的情况下,实际的返回值被视为实现细节,因此,简单地return ING似乎是最合适的 - 只是让Zend引擎决定有关默认。