zend_parse_parameters应该从PHP_FUNCTION内部返回zval



我注意到,在95%的情况下,在PHP_FUNCTION中评估zend_parse_parametersFAILURE后,总是只有return;。这没有意义,因为PHP_FUNCTION期望返回ZVAL。我不确定return_value的默认值是什么,当它没有明确设置。

我搜索了所有的php源代码和所有的扩展源代码捆绑在php。在95%的情况下,他们只是使用return。在少数扩展- dateintl中,它们执行RETURN_FALSE。在Sara coleman写的一篇文章中,她使用了RETURN_NULL()

我强烈认为我应该在大多数情况下使用RETURN_FALSE,这对PHP_FUNCTION s更有意义。我是不是漏掉了什么?

如果zend_parse_parameters()失败,习惯上直接使用return。这在PHP手册中有记录:

如果zend_parse_parameters没有接收到黑客指定的正确参数,并且接收到的参数不能被转换为符合type_spec的参数,则会引发错误,按照惯例,黑客应该立即return

根据PHP手册,return_value的类型默认为IS_NULL:

指向PHP变量的指针,该变量可以用传递给用户的返回值填充。默认为IS_NULL。

此外,PHP手册指出:

如果给函数的形参不是它所期望的,例如传递一个数组而期望是字符串,则函数的返回值是未定义的。在这种情况下,它可能会返回NULL,但这只是一个约定,不能依赖。

因此,在zend_parse_parameters()失败的情况下,实际返回值必须被视为实现细节,因此,简单的return似乎是最合适的-只需让Zend引擎决定默认值。

相关内容

  • 没有找到相关文章

最新更新