#34690 [Opn->Fbk]: call_user_func and scope resolution operator ( :: )

From: Date: Fri, 30 Sep 2005 13:22:39 +0000
Subject: #34690 [Opn->Fbk]: call_user_func and scope resolution operator ( :: )
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-85809@lists.php.net to get a copy of this message
ID: 34690 Updated by: tony2001@php.net Reported By: claudio dot frizziero at nereal dot com -Status: Open +Status: Feedback Bug Type: Scripting Engine problem Operating System: Linux (Fedora Core 4) PHP Version: 5.0.5 New Comment: Long version: Please be more verbose and try to describe the problem in more details. Fields in the report form like "expected result" and "actual result" are given for you to fill them, not to ignore. Short version: I don't get the problem. Previous Comments: ------------------------------------------------------------------------ [2005-09-30 15:19:13] claudio dot frizziero at nereal dot com Description: ------------ When I use call_user_func (and call_user_func_array, of course) inside a method to call a method of another class I'm expecting it works like the scope resolution operator. If it is not a bug: is it possible to add a flag, or alternatively add two similar function (i.e. call_user_func_Paamayim_Nekudotayim and call_user_func_array_Paamayim_Nekudotayim 8), to avoid the eval workaround? Thank you! Note: i'm using php 5.0.4, but I don't find any fix in the changelog to 5.0.5 Reproduce code: --------------- class MyClass { public $string = 'Hello!'; public function SayHello() { call_user_func(array('OutputClass', 'WriteToOutput')); // } public function SayHello2() { OutputClass::WriteToOutput(); } public function SayHello3($outputclass, $outputmethod) { // $outputclass::$outputmethod(); // syntax not allowed, with or without curly braces eval($outputclass . '::' . $outputmethod . '();'); // it works, but it's a workaround } } class OutputClass { public function WriteToOutput() { echo ($this->string); } } $a = new MyClass(); $a->SayHello(); // Fatal error: Using $this when not in object context $a->SayHello2(); // it works (wow!) $a->SayHello3('OutputClass', 'WriteToOutput'); // it works only using eval ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=34690&edit=1

« previous php.bugs (#85809) next »