Hello all.

Attached is a patch to tweak expected parameter message a little.

Currently:
[EMAIL PROTECTED] 5.2$ sapi/cli/php -c php.ini -r '$obj = new DateTime;
timezone_name_get($obj);'
PHP Warning: timezone_name_get() expects parameter 1 to be
DateTimeZone, object given in Command line code on line 1

After the patch:
[EMAIL PROTECTED] 5.2$ sapi/cli/php -c php.ini -r '$obj = new DateTime;
timezone_name_get($obj);'
PHP Warning: timezone_name_get() expects parameter 1 to be
DateTimeZone, DateTime object given in Command line code on line 1

That is, if given parameter is object we print its type out too.

-Hannes
Index: Zend/zend_API.c
===================================================================
RCS file: /repository/ZendEngine2/zend_API.c,v
retrieving revision 1.296.2.27.2.22
diff -u -r1.296.2.27.2.22 zend_API.c
--- Zend/zend_API.c     25 Jul 2006 06:49:38 -0000      1.296.2.27.2.22
+++ Zend/zend_API.c     10 Sep 2006 21:56:27 -0000
@@ -621,9 +621,15 @@
                        char *space;
                        char *class_name = get_active_class_name(&space 
TSRMLS_CC);
 
-                       zend_error(E_WARNING, "%s%s%s() expects parameter %d to 
be %s, %s given",
+                       if(Z_TYPE_PP(arg) == IS_OBJECT) {
+                               zend_error(E_WARNING, "%s%s%s() expects 
parameter %d to be %s, %s object given",
+                                       class_name, space, 
get_active_function_name(TSRMLS_C), arg_num, expected_type,
+                                       Z_OBJCE_PP(arg)->name);
+                       } else {
+                               zend_error(E_WARNING, "%s%s%s() expects 
parameter %d to be %s, %s given",
                                        class_name, space, 
get_active_function_name(TSRMLS_C), arg_num, expected_type,
                                        zend_zval_type_name(*arg));
+                       }
                }
                return FAILURE;
        }
Index: Zend/zend_API.c
===================================================================
RCS file: /repository/ZendEngine2/zend_API.c,v
retrieving revision 1.400
diff -u -r1.400 zend_API.c
--- Zend/zend_API.c     28 Aug 2006 17:14:49 -0000      1.400
+++ Zend/zend_API.c     10 Sep 2006 22:00:02 -0000
@@ -826,9 +826,15 @@
                        char *space;
                        zstr class_name = get_active_class_name(&space 
TSRMLS_CC);
 
-                       zend_error(E_WARNING, "%v%s%v() expects parameter %d to 
be %R, %s given",
+                       if(Z_TYPE_PP(arg) == IS_OBJECT) {
+                               zend_error(E_WARNING, "%v%s%v() expects 
parameter %d to be %R, %v object given",
+                                       class_name, space, 
get_active_function_name(TSRMLS_C), arg_num, ret_type, expected_type,
+                                       Z_OBJCE_PP(arg)->name);
+                       } else {
+                               zend_error(E_WARNING, "%v%s%v() expects 
parameter %d to be %R, %s given",
                                        class_name, space, 
get_active_function_name(TSRMLS_C), arg_num, ret_type, expected_type,
                                        zend_zval_type_name(*arg));
+                       }
                }
                return FAILURE;
        }
-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to