From: stephan dot schulze at kapthon dot com Operating system: CentOs 5.4 PHP version: 5.3.1 PHP Bug Type: Scripting Engine problem Bug description: switch on constant does not enter correct block
Description: ------------ If a class function returns a class constant or true and the result is checked with a switch, the switch does not enter the correct block. I expect $bResult should be converted to 1 if it is "true" but not to -1. Reproduce code: --------------- <?php class Foo { const ERR_ONE = -1; public function bar() { return true; } public function isErr() { return self::ERR_ONE; } } $oFoo = new Foo(); $bResult = $oFoo->bar(); switch ($bResult) { case Foo::ERR_ONE: "ERR_ONE: " . var_dump($bResult); break; default: echo "default"; break; } $bResult = $oFoo->isErr(); switch ($bResult) { case Foo::ERR_ONE: "ERR_ONE: " . var_dump($bResult); break; default: echo "default"; break; } Expected result: ---------------- Expected to get "default" and "ERR_ONE: int(-1)" Actual result: -------------- ERR_ONE: bool(true) ERR_ONE: int(-1) -- Edit bug report at http://bugs.php.net/?id=50878&edit=1 -- Try a snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=50878&r=trysnapshot52 Try a snapshot (PHP 5.3): http://bugs.php.net/fix.php?id=50878&r=trysnapshot53 Try a snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=50878&r=trysnapshot60 Fixed in SVN: http://bugs.php.net/fix.php?id=50878&r=fixed Fixed in SVN and need be documented: http://bugs.php.net/fix.php?id=50878&r=needdocs Fixed in release: http://bugs.php.net/fix.php?id=50878&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=50878&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=50878&r=needscript Try newer version: http://bugs.php.net/fix.php?id=50878&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=50878&r=support Expected behavior: http://bugs.php.net/fix.php?id=50878&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=50878&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=50878&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=50878&r=globals PHP 4 support discontinued: http://bugs.php.net/fix.php?id=50878&r=php4 Daylight Savings: http://bugs.php.net/fix.php?id=50878&r=dst IIS Stability: http://bugs.php.net/fix.php?id=50878&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=50878&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=50878&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=50878&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=50878&r=mysqlcfg