ID: 14221 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] -Status: Duplicate +Status: Analyzed Bug Type: Scripting Engine problem -Operating System: Linux Mandrake 7.2 +Operating System: ANY -PHP Version: 4.0.4pl1 +PHP Version: 4.2.0-dev New Comment:
In fact, this bug is not realated to multiple method definition bug. Stauts => Analyzed. Previous Comments: ------------------------------------------------------------------------ [2002-04-01 21:51:50] [EMAIL PROTECTED] It seems this isnot related to http://bugs.php.net/bug.php?id=16265 Since this segfaults <?php error_reporting (E_ALL); class test { var $currentField; function setCurrentField($field_name) { $this->currentField = $field_name; } function getValue() { return $this->getValue($this->currentField); } } $frm = new test; $frm->setCurrentField("blah"); print $frm->getValue(); ?> ------------------------------------------------------------------------ [2002-04-01 21:39:36] [EMAIL PROTECTED] http://bugs.php.net/bug.php?id=16265 should be reopenned. (I just did) ------------------------------------------------------------------------ [2002-04-01 19:16:29] [EMAIL PROTECTED] This looks to have been resolved here: http://bugs.php.net/bug.php?id=16265 If this is correct, can this report be closed? ------------------------------------------------------------------------ [2001-12-06 07:18:42] [EMAIL PROTECTED] Make this report a duplicate of #13703 ------------------------------------------------------------------------ [2001-11-26 04:01:48] [EMAIL PROTECTED] > php doesn't call functions based on the parameters given Ah hah! OK, that changes everything - I was thinking like C++ classes, which, if my memory serves me correctly, know which member function to use. Modified code that deals with this OK: ======================================================== #!/usr/bin/php -q <?php error_reporting (E_ALL); class test { var $currentField; function setCurrentField($field_name) { $this->currentField = $field_name; } function getValue($field_name = false) { if ($field_name === false) $field_name = $this->currentField; return "getValue with arg - $field_name\n"; } } $frm = new test; $frm->setCurrentField("blah"); print $frm->getValue("real arg"); print $frm->getValue(); ?> ======================================================== > That's an ZE problem (ie. > method with same name should give parse error or at least some > warning). Agreed. Testing this with straight functions shows that the engine does do this for straight functions: ======================================================== #!/usr/bin/php -q <?php error_reporting (E_ALL); function blah() { print "no arg\n"; } function blah($field) { print "with arg, $field\n"; } blah(); blah("test"); ?> ======================================================== Output gives: [root tmp]# ./test.php <br> <b>Fatal error</b>: Cannot redeclare blah() in <b>./test.php</b> on line <b>9</b><br> [root tmp]# An equivalent "Cannot redeclare test class member function blah() in test.php on line 9" would be extremely helpful and is probably called for - I've always found the PHP syntax checking to extremely clear and spot-on previously. Many thanks for all your help, Kind Regards, Nick. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/14221 -- Edit this bug report at http://bugs.php.net/?id=14221&edit=1
