summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS3
-rw-r--r--ext/spl/php_spl.c19
-rw-r--r--ext/spl/tests/spl_object_id.phpt21
3 files changed, 43 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index 7ee5ffc3cc..8487a16557 100644
--- a/NEWS
+++ b/NEWS
@@ -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)