helly Sun Jul 9 10:22:03 2006 UTC
Added files:
/php-src/ext/spl/tests spl_005.phpt
Modified files:
/php-src/ext/spl php_spl.c
Log:
- Add spl_object_hash()
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/php_spl.c?r1=1.94&r2=1.95&diff_format=u
Index: php-src/ext/spl/php_spl.c
diff -u php-src/ext/spl/php_spl.c:1.94 php-src/ext/spl/php_spl.c:1.95
--- php-src/ext/spl/php_spl.c:1.94 Tue Jun 13 13:12:19 2006
+++ php-src/ext/spl/php_spl.c Sun Jul 9 10:22:03 2006
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_spl.c,v 1.94 2006/06/13 13:12:19 dmitry Exp $ */
+/* $Id: php_spl.c,v 1.95 2006/07/09 10:22:03 helly Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -36,6 +36,7 @@
#include "spl_observer.h"
#include "zend_exceptions.h"
#include "zend_interfaces.h"
+#include "ext/standard/md5.h"
#ifdef COMPILE_DL_SPL
ZEND_GET_MODULE(spl)
@@ -577,6 +578,32 @@
add_next_index_text(return_value,
EG(autoload_func)->common.function_name, 1);
} /* }}} */
+/* {{{ proto string spl_object_hash(object obj)
+ Return hash id for given object */
+PHP_FUNCTION(spl_object_hash)
+{
+ zval *obj;
+ int len;
+ char *hash;
+ char md5str[33];
+ PHP_MD5_CTX context;
+ unsigned char digest[16];
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &obj) ==
FAILURE) {
+ return;
+ }
+
+ len = spprintf(&hash, 0, "%p:%d", Z_OBJ_HT_P(obj), Z_OBJ_HANDLE_P(obj));
+
+ md5str[0] = '\0';
+ PHP_MD5Init(&context);
+ PHP_MD5Update(&context, (unsigned char*)hash, len);
+ PHP_MD5Final(digest, &context);
+ make_digest(md5str, digest);
+ RETVAL_STRING(md5str, 1);
+ efree(hash);
+}
+
int spl_build_class_list_string(zval **entry, char **list TSRMLS_DC) /* {{{ */
{
char *res;
@@ -643,6 +670,7 @@
PHP_FE(spl_autoload_call, NULL)
PHP_FE(class_parents, NULL)
PHP_FE(class_implements, NULL)
+ PHP_FE(spl_object_hash, NULL)
#ifdef SPL_ITERATORS_H
PHP_FE(iterator_to_array, arginfo_iterator)
PHP_FE(iterator_count, arginfo_iterator)
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/tests/spl_005.phpt?view=markup&rev=1.1
Index: php-src/ext/spl/tests/spl_005.phpt
+++ php-src/ext/spl/tests/spl_005.phpt
--TEST--
SPL: spl_object_hash()
--SKIPIF--
<?php if (!extension_loaded("spl")) print "skip"; ?>
--FILE--
<?php
var_dump(spl_object_hash(new stdClass));
var_dump(spl_object_hash(42));
var_dump(spl_object_hash());
?>
===DONE===
<?php exit(0); ?>
--EXPECTF--
string(32) "%s"
Warning: spl_object_hash() expects parameter 1 to be object, integer given in
%sspl_005.php on line %d
NULL
Warning: spl_object_hash() expects exactly 1 parameter, 0 given in
%sspl_005.php on line %d
NULL
===DONE===
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php