我注意到,在95%的情况下,在PHP_FUNCTION
中评估zend_parse_parameters
到FAILURE
后,总是只有return;
。这没有意义,因为PHP_FUNCTION
期望返回ZVAL
。我不确定return_value
的默认值是什么,当它没有明确设置。
我搜索了所有的php源代码和所有的扩展源代码捆绑在php。在95%的情况下,他们只是使用return。在少数扩展- date
和intl
中,它们执行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引擎决定默认值。