ID: 38824 User updated by: tklingenberg at lastflood dot com Reported By: tklingenberg at lastflood dot com Status: Wont fix Bug Type: Feature/Change Request Operating System: win32 PHP Version: 5.1.6 New Comment:
Accepting a parameter by reference does not mean it's impossible to check for an uninitalized variable: <?php function unintialize_a_var(&$var) { if (!isset($var)) { // Why should I uninitalize something uninitialized? } else { $var = NULL; } } uninitialize_a_var($uninitialized); // you would expect a NOTICE here, right? ?> Anyway your (and mine) example function is useless, and it does not point to the problem itself afterall. But if the function is about setting the type of a variable and the variable is not initialized I would strongly assume to get a NOTICE about this. Especially in PHP where a variable is created by using the dollarsign followed by the variabelename. Would you expect to get a NOTICE here?: echo $var; var_dump($var); intval($var); I get a notice there. With your arguments you would not expect it here, right? Previous Comments: ------------------------------------------------------------------------ [2006-09-14 11:16:54] [EMAIL PROTECTED] It's just impossible. settype() function accepts the first parameter by reference. See fo example: <?php function create_a_var(&$var) { $var = 'created'; } create_a_var($doesnt_exist); // you would not expect a NOTICE here, right? ?> settype() does the same. ------------------------------------------------------------------------ [2006-09-14 11:07:13] tklingenberg at lastflood dot com Description: ------------ In case a program uses an uninitialized variable passed to settype(), it should throw a Notice, compareable to echo; intval() and other variable related functions. Even if PHP does everything right ($var is a variable you can change the type of), for the PHP User, it's highly possible she/he made an error and typed in the wrong variable name. Afterwards the type of the variable is unchecked, which can lead to even more critical errors. All this is unnoticed because PHP does not throw a NOTICE. Reproduce code: --------------- <?php $r = settype($var, "float"); ?> Expected result: ---------------- It should throw a Notice Actual result: -------------- No Notice is giving that $var is not initialized. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=38824&edit=1