Closed alex-1900 closed 2 years ago
Yaf_Registry::set 的第二个参数为什么注释为 string 类型呢?我存其他类型好像也没问题,这里有什么陷阱吗?
从yaf的源代码中可以看到 Registry::set()开放给php调用的接口如下:
/** {{{ proto public static Yaf_Registry::set($name, $value)
*/
PHP_METHOD(yaf_registry, set) {
zval *value;
zend_string *name;
yaf_registry_object *registry = yaf_registry_instance();
if (zend_parse_parameters(ZEND_NUM_ARGS(), "Sz", &name, &value) == FAILURE) {
return;
}
if (yaf_registry_update(registry, name, value)) {
RETURN_TRUE;
}
RETURN_FALSE;
}
/* }}} */
可以看到 value 的类型是 zval,而这个zval是可以表示任何php的数据类型的 所以Registry::set() 第二个参数,可以是php能表示的任何类型 关于zval可以看看鸟哥的博客 https://www.laruence.com/2018/04/08/3170.html
Yaf_Registry::set 的第二个参数为什么注释为 string 类型呢?我存其他类型好像也没问题,这里有什么陷阱吗?