From: soapergem at gmail dot com Operating system: Windows XP PHP version: 5.3.1 PHP Bug Type: Feature/Change Request Bug description: Automatically translate "self" in method_exists
Description: ------------ In reference to bug #50289: If I call method_exists("self", "method") from within a class, it should automatically translate "self" to the classname. Right now the behavior is not obvious; the behavior does not adhere to the KISS principle. 1. method_exists already can check for static methods. 2. "self" can already automatically translate to the current class name, for instance in call_user_func. 3. The most logical, simple and obvious expectation is that if you combine these two--you call method_exists with "self"--that it will automatically translate "self" to the current class name, and check for the method. Currently it does not. The current behavior is counterintuitive and confusing. Making this change is not dangerous. Making this change will not cause any backwards-compatibility issues. 1. "self" is a reserved word. You cannot declare a class named "self"- -this will issue a fatal error. So there is no possibility of any ambiguity. You cannot confuse "self" with any other class, because no other class can be named "self". It does not make sense to have "self" work in some contexts but not in others. It would be better if it were consistent. Reproduce code: --------------- <?php class Test { public static function check() { var_dump(method_exists("self", "method")); } public static function method() { } } Test::check(); ?> Expected result: ---------------- bool(true) Actual result: -------------- bool(false) -- Edit bug report at http://bugs.php.net/?id=50296&edit=1 -- Try a snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=50296&r=trysnapshot52 Try a snapshot (PHP 5.3): http://bugs.php.net/fix.php?id=50296&r=trysnapshot53 Try a snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=50296&r=trysnapshot60 Fixed in SVN: http://bugs.php.net/fix.php?id=50296&r=fixed Fixed in SVN and need be documented: http://bugs.php.net/fix.php?id=50296&r=needdocs Fixed in release: http://bugs.php.net/fix.php?id=50296&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=50296&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=50296&r=needscript Try newer version: http://bugs.php.net/fix.php?id=50296&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=50296&r=support Expected behavior: http://bugs.php.net/fix.php?id=50296&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=50296&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=50296&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=50296&r=globals PHP 4 support discontinued: http://bugs.php.net/fix.php?id=50296&r=php4 Daylight Savings: http://bugs.php.net/fix.php?id=50296&r=dst IIS Stability: http://bugs.php.net/fix.php?id=50296&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=50296&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=50296&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=50296&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=50296&r=mysqlcfg