#23804 [Com]: passing wrong parameter count to user functions gives no warnings
| From: | b_ulrich at t-online dot de | Date: | Sun, 25 May 2003 22:22:48 +0000 |
| Subject: | #23804 [Com]: passing wrong parameter count to user functions gives no warnings | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-40399@lists.php.net to get a copy of this message | ||
ID: 23804
Comment by: b_ulrich at t-online dot de
Reported By: meebey@php.net
Status: Verified
Bug Type: Scripting Engine problem
Operating System: Debian GNU/Linux
PHP Version: 4.3.1
New Comment:
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.
Previous Comments:
------------------------------------------------------------------------
[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