#23804 [WFx]: passing wrong parameter count to user functions gives no warnings

From: Date: Mon, 26 May 2003 09:08:15 +0000
Subject: #23804 [WFx]: passing wrong parameter count to user functions gives no warnings
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-40426@lists.php.net to get a copy of this message
ID: 23804 User updated by: meebey@php.net Reported By: meebey@php.net Status: Wont fix Bug Type: Scripting Engine problem Operating System: Debian GNU/Linux PHP Version: 4.3.1 New Comment: if not error than at least a warning... It's very confusing when APIs in PHP programs change and after searching for hours, the problem is found which is a function call with too much parameters. I always exspected that PHP will give a warning like I get them with the C functions. Also it's bad programming, ignoring this kind of error is not good. Previous Comments: ------------------------------------------------------------------------ [2003-05-25 21:30:40] sniper@php.net There's nothing to fix here, more is broken if some error is added.. ------------------------------------------------------------------------ [2003-05-25 17:32:48] meebey@php.net I didn't say anything about calling an user function with a variable parameter list, that is a completely different situation. ------------------------------------------------------------------------ [2003-05-25 17:22:48] b_ulrich at t-online dot de I think this isn't a bug and there should be no warning. Reason: Users can define functions of variable number of parameters. So you can define a function with no parameters like function foo() { ...} and cal it with a different number of parameters like foo($a,$b); foo($a,$b,$c,$d); To handle them ther are functions like func_num_arg() or func_get_args() So warnings are wrong in that case. ------------------------------------------------------------------------ [2003-05-25 17:02:28] nicos@php.net Reproduced with 4.3.2RC4 and PHP5. I'm not sure if its a feature request or if its a bug but its true that IMHO, it should raise an E_WARNING as ZEND_WRONG_PARAM_COUNT(); or at least an E_NOTICE. ------------------------------------------------------------------------ [2003-05-25 16:59:09] meebey@php.net When I pass 3 parameters to an user PHP function, that needs 2 parameters, I don't get any fatal, warning nor notice.. The function is just called and the 3. parameter ignored... When C PHP Functions are called like mysql_connect() with a wrong parameter count, I will get a E_WARNING. It should be the same with the user functions... ZEND_API void zend_wrong_param_count(TSRMLS_D) does this for the C functions... Also it's the same behaviour on ZendEngine2, no fatal, warning nor notice.. here a simple script to reproduces/test the bug: #!/usr/local/bin/php <?php // to be sure we get all fatal, warnings and notices error_reporting(E_ALL); ini_set("display_errors","1"); // declaring a function which takes _2_ parameters function foo($param1, $param2) { echo "function foo is called, all went fine...\n"; } // calling the function and passing _3_ parameters foo(1, 2, 3); ?> ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=23804&edit=1

« previous php.bugs (#40426) next »