ID: 34690
Updated by: [EMAIL PROTECTED]
Reported By: claudio dot frizziero at nereal dot com
-Status: Open
+Status: Bogus
Bug Type: Scripting Engine problem
Operating System: Linux (Fedora Core 4)
PHP Version: 5.0.5
New Comment:
There is no $this when you call a static method.
The error message clearly says that.
Previous Comments:
------------------------------------------------------------------------
[2005-09-30 15:41:38] claudio dot frizziero at nereal dot com
Expected result:
to see "Hello!" on my browser (or console) when I call $a->SayHello();
Actual result:
Fatal error: Using $this when not in object
You don't get the problem? What do you get? 3 "Hello!"?
------------------------------------------------------------------------
[2005-09-30 15:22:29] [EMAIL PROTECTED]
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.
------------------------------------------------------------------------
[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