helly Sun Jul 9 10:22:27 2006 UTC Added files: (Branch: PHP_5_2) /php-src/ext/spl/tests spl_005.phpt
Modified files: /php-src/ext/spl php_spl.c Log: - MFH Add spl_object_hash() http://cvs.php.net/viewvc.cgi/php-src/ext/spl/php_spl.c?r1=1.52.2.28.2.3&r2=1.52.2.28.2.4&diff_format=u Index: php-src/ext/spl/php_spl.c diff -u php-src/ext/spl/php_spl.c:1.52.2.28.2.3 php-src/ext/spl/php_spl.c:1.52.2.28.2.4 --- php-src/ext/spl/php_spl.c:1.52.2.28.2.3 Thu Jun 15 18:33:08 2006 +++ php-src/ext/spl/php_spl.c Sun Jul 9 10:22:27 2006 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_spl.c,v 1.52.2.28.2.3 2006/06/15 18:33:08 dmitry Exp $ */ +/* $Id: php_spl.c,v 1.52.2.28.2.4 2006/07/09 10:22:27 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) @@ -566,6 +567,32 @@ add_next_index_string(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; @@ -632,6 +659,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