diff --git a/NEWS b/NEWS index d3604ee6eb2c1..2e0d76c5e9cf4 100644 --- a/NEWS +++ b/NEWS @@ -28,9 +28,11 @@ PHP NEWS (Anatol) - SPL: + . Added spl_object_id() function returning an integer (the object handle) for an object. + (Tyson Andre) . Fixed bug #73471 (PHP freezes with AppendIterator). (jhdxr) . Fixed bug #71412 (Incorrect arginfo for ArrayIterator::__construct). - (tysonandre775 at hotmail dot com) + (Tyson Andre) - Session: . Fixed bug #74514 (5 session functions incorrectly warn when calling in diff --git a/ext/spl/php_spl.c b/ext/spl/php_spl.c index 34b54e81e1ddb..5f2d4cfe291f2 100644 --- a/ext/spl/php_spl.c +++ b/ext/spl/php_spl.c @@ -794,6 +794,20 @@ PHP_FUNCTION(spl_object_hash) } /* }}} */ +/* {{{ proto int spl_object_id(object obj) + Return integer hash id for given object */ +PHP_FUNCTION(spl_object_id) +{ + zval *obj; + + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT(obj) + ZEND_PARSE_PARAMETERS_END_EX(RETURN_NULL()); + + RETURN_LONG((zend_long)Z_OBJ_HANDLE_P(obj)); +} +/* }}} */ + PHPAPI zend_string *php_spl_object_hash(zval *obj) /* {{{*/ { intptr_t hash_handle, hash_handlers; @@ -915,6 +929,10 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_spl_object_hash, 0, 0, 1) ZEND_ARG_INFO(0, obj) ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_spl_object_id, 0, 0, 1) + ZEND_ARG_INFO(0, obj) +ZEND_END_ARG_INFO() /* }}} */ /* {{{ spl_functions @@ -931,6 +949,7 @@ const zend_function_entry spl_functions[] = { PHP_FE(class_implements, arginfo_class_implements) PHP_FE(class_uses, arginfo_class_uses) PHP_FE(spl_object_hash, arginfo_spl_object_hash) + PHP_FE(spl_object_id, arginfo_spl_object_id) #ifdef SPL_ITERATORS_H PHP_FE(iterator_to_array, arginfo_iterator_to_array) PHP_FE(iterator_count, arginfo_iterator) diff --git a/ext/spl/tests/spl_object_id.phpt b/ext/spl/tests/spl_object_id.phpt new file mode 100644 index 0000000000000..e316bd01f93fc --- /dev/null +++ b/ext/spl/tests/spl_object_id.phpt @@ -0,0 +1,24 @@ +--TEST-- +SPL: spl_object_id() +--FILE-- + +===DONE=== + +--EXPECTF-- +int(%d) + +Warning: spl_object_id() expects parameter 1 to be object, integer given in %sspl_object_id.php on line %d +NULL + +Warning: spl_object_id() expects exactly 1 parameter, 0 given in %sspl_object_id.php on line %d +NULL +bool(false) +===DONE===