Bug #61033 __FUNCTION__ doesn't report correctly in alias trait methods

From: Date: Thu, 09 Feb 2012 21:36:07 +0000
Subject: Bug #61033 __FUNCTION__ doesn't report correctly in alias trait methods
Groups: php.internals 
Request: Send a blank email to internals+get-57806@lists.php.net to get a copy of this message
Hello everyone, I've recently came across an odd situation where __FUNCTION__ can produce a misleading results when using traits with aliased methods, see https://bugs.php.net/bug.php?id=61033. <https://bugs.php.net/bug.php?id=61033> This has been closed and I've been asked start a discussion on here if I disagree with the ruling. The reason why I feel this should be changes to reflect the actual called function name is that one of main uses of the __FUNCTION__ constant it to refer back to the function that is currently running, for the use recursive functions: trait FooTrait {
    public function foo($n) {
        if ($n == 0) return;
        echo $n . PHP_EOL;
        $function = __FUNCTION__;
        $this->$function(--$n);
    }
} class MyClass {
    use FooTrait { foo as public countdown; }
    public function foo() {
        echo 'MyClass::foo()';
    }
} $instance = new MyClass(); $instance->countdown(3); This example will produce running (PHP 5.4 RC7):
    10
    MyClass::foo()
Which as you can see is not the desired effect. I send this email in the hope this can get the discussion under way regarding the magic constant __FUNCTION__. Thanks, Marc Easen

« previous php.internals (#57806) next »