diff options
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | ext/spl/php_spl.c | 19 | ||||
-rw-r--r-- | ext/spl/tests/spl_object_id.phpt | 21 |
3 files changed, 43 insertions, 0 deletions
@@ -5,6 +5,9 @@ PHP NEWS - SQLite3: . Updated to SQLite 3.20.0. (cmb) +- SPL: + . Added spl_object_id(). (Tyson Andre) + 03 Aug 2017, PHP 7.2.0beta2 - Core: diff --git a/ext/spl/php_spl.c b/ext/spl/php_spl.c index 34b54e81e1..d5b0c42f65 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) + Returns the integer object handle for the given object */ +PHP_FUNCTION(spl_object_id) +{ + zval *obj; + + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT(obj) + ZEND_PARSE_PARAMETERS_END(); + + 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 0000000000..fc7b74f8d9 --- /dev/null +++ b/ext/spl/tests/spl_object_id.phpt @@ -0,0 +1,21 @@ +--TEST-- +SPL: spl_object_id() +--FILE-- +<?php + +var_dump(spl_object_id(new stdClass)); +var_dump(spl_object_id(42)); +var_dump(spl_object_id()); +$a = new stdClass(); +var_dump(spl_object_id(new stdClass) === spl_object_id($a)); + +?> +--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) |