bjori Sun Jun 25 22:51:55 2006 UTC Added files: /php-src/ext/standard/tests/filters php_user_filter_01.phpt php_user_filter_02.phpt php_user_filter_03.phpt
Modified files: /php-src/ext/standard user_filters.c Log: Added argument info (forces user-space filters to register correct arguments) Added tests http://cvs.php.net/viewvc.cgi/php-src/ext/standard/user_filters.c?r1=1.37&r2=1.38&diff_format=u Index: php-src/ext/standard/user_filters.c diff -u php-src/ext/standard/user_filters.c:1.37 php-src/ext/standard/user_filters.c:1.38 --- php-src/ext/standard/user_filters.c:1.37 Mon Mar 13 04:40:11 2006 +++ php-src/ext/standard/user_filters.c Sun Jun 25 22:51:55 2006 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: user_filters.c,v 1.37 2006/03/13 04:40:11 pollita Exp $ */ +/* $Id: user_filters.c,v 1.38 2006/06/25 22:51:55 bjori Exp $ */ #include "php.h" #include "php_globals.h" @@ -54,11 +54,26 @@ PHP_FUNCTION(user_filter_nop) { } +static +ZEND_BEGIN_ARG_INFO(arginfo_php_user_filter_filter, 0) + ZEND_ARG_INFO(0, in) + ZEND_ARG_INFO(0, out) + ZEND_ARG_INFO(1, consumed) + ZEND_ARG_INFO(0, closing) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO(arginfo_php_user_filter_onCreate, 0) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO(arginfo_php_user_filter_onClose, 0) +ZEND_END_ARG_INFO() static zend_function_entry user_filter_class_funcs[] = { - PHP_NAMED_FE(filter, PHP_FN(user_filter_nop), NULL) - PHP_NAMED_FE(onCreate, PHP_FN(user_filter_nop), NULL) - PHP_NAMED_FE(onClose, PHP_FN(user_filter_nop), NULL) + PHP_NAMED_FE(filter, PHP_FN(user_filter_nop), arginfo_php_user_filter_filter) + PHP_NAMED_FE(onCreate, PHP_FN(user_filter_nop), arginfo_php_user_filter_onCreate) + PHP_NAMED_FE(onClose, PHP_FN(user_filter_nop), arginfo_php_user_filter_onClose) { NULL, NULL, NULL } }; @@ -66,11 +81,14 @@ PHP_MINIT_FUNCTION(user_filters) { + zend_class_entry *php_user_filter; /* init the filter class ancestor */ INIT_CLASS_ENTRY(user_filter_class_entry, "php_user_filter", user_filter_class_funcs); - if (NULL == zend_register_internal_class(&user_filter_class_entry TSRMLS_CC)) { + if ((php_user_filter = zend_register_internal_class(&user_filter_class_entry TSRMLS_CC)) == NULL) { return FAILURE; } + zend_declare_property_string(php_user_filter, "filtername", sizeof("filtername")-1, "", ZEND_ACC_PUBLIC TSRMLS_CC); + zend_declare_property_string(php_user_filter, "params", sizeof("params")-1, "", ZEND_ACC_PUBLIC TSRMLS_CC); /* init the filter resource; it has no dtor, as streams will always clean it up * at the correct time */ http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/filters/php_user_filter_01.phpt?view=markup&rev=1.1 Index: php-src/ext/standard/tests/filters/php_user_filter_01.phpt +++ php-src/ext/standard/tests/filters/php_user_filter_01.phpt --TEST-- class php_user_filter#1 --FILE-- <?php class foo extends php_user_filter { function filter($in, $out, &$consumed, $closing) {} function onCreate() {} function onClose() {} } class bar extends php_user_filter { function filter($in, $out, &$consumed) {} function onCreate() {} function onClose() {} } ?> --EXPECTF-- Fatal error: Declaration of bar::filter() must be compatible with that of php_user_filter::filter() in %s on line %d http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/filters/php_user_filter_02.phpt?view=markup&rev=1.1 Index: php-src/ext/standard/tests/filters/php_user_filter_02.phpt +++ php-src/ext/standard/tests/filters/php_user_filter_02.phpt --TEST-- class php_user_filter#2 --FILE-- <?php class foo extends php_user_filter { function filter($in, $out, $consumed, $closing) {} function onCreate() {} function onClose() {} } ?> --EXPECTF-- Fatal error: Declaration of foo::filter() must be compatible with that of php_user_filter::filter() in %s on line %d http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/filters/php_user_filter_03.phpt?view=markup&rev=1.1 Index: php-src/ext/standard/tests/filters/php_user_filter_03.phpt +++ php-src/ext/standard/tests/filters/php_user_filter_03.phpt --TEST-- class php_user_filter#3 --FILE-- <?php class foo extends php_user_filter { function filter($in, $out, &$consumed, $closing) {} function onCreate($var) {} function onClose() {} } ?> --EXPECTF-- Fatal error: Declaration of foo::onCreate() must be compatible with that of php_user_filter::onCreate() in %s on line %d -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php