在看PHP扩展开发时,看到一处关于PHP函数返回值的问题。
当定义了一个函数,而这个函数拥有返回值,在用户使用时,并没有使用返回值,zend引擎可以实现报错,这是如何实现的,怎么个原理?
ZEND_FUNCTION(sample_array_range)
{
if (return_value_used) {
int i;
//把返回值初始化成一个PHP语言中的数组
array_init(return_value);
for(i = 0; i < 1000; i++)
{
//向retrun_value里不断的添加新元素,值为i
add_next_index_long(return_value, i);
}
return;
}
else
{
//抛出一个E_NOTICE级错误
php_error_docref(NULL TSRMLS_CC, E_NOTICE,"猫了个咪的,我就知道你没用我的劳动成果!");
RETURN_NULL();
}
}
在这个函数定义里面,感觉是先接收
return_value_used参数,但是当函数运行完成之前,系统应该并不知道该函数返回值是否被使用到了吧!想不通他的实现原理。
求大牛,说说其中的实现原理!
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
小伙看你根骨奇佳,潜力无限,来学PHP伐。