Paul van Haren wrote: > OK guys, thanks for all your inputs. > > Based on your guidance, I have tested the following code with a > series of variations: > > class foobar { > function bar2 () { > echo "Yep, in bar2() right now\n"; > } > > public function foo2 () { > $a = "bar2"; // Experiment 0 > $a(); // Fatal error > } > } > > And the variations: > $a = "bar2"; // Experiment 0 > $a(); // Fatal error: Call to undefined function > bar2() > > $a = "foobar::bar2"; // Experiment 1 > $a(); // Fatal error: Call to undefined function > bar2() > > $a = "bar2"; // Experiment 2 > eval($a."();"); // Fatal error: Call to undefined function > bar2() > > $a = "foobar::bar2"; // Experiment 3 > eval($a."();"); // Works but far from elegant > > $a = "bar2"; // Experiment 4 > $this->$a(); // Works fine > > $a = "bar2"; // Experiment 5 > self::$a(); // Works fine > > So, I have a working solution right now. But I still don't understand the > essence of the differences between experiment #1 and #4. Also, I don't > understand the need to specify the class name in experiment #3, coming > from #2. Functions bar2() and foo2() are part of the same class foobar, > and I would assume that the name 'bar2' would be in scope of the function > foo2.
your assumptions and php's reality differ. symbol names resolution is never tired in the class scope. $a = "foobar::bar2"; $a(); this is trying to call a function called "foobar::bar2", which given that you cant do (parse error): function foobar::bar2() {} whatever munged error message you get regarding 'bar2()' not existing, the fact remains that 'variable' function name functionality has no concept of class scope, the T_PAAMAYIM_NEKUDOTAYIM is not recognized. never has been, probably never will be. class foo { function bar1() { $a = "foo::bar2"; call_user_func(explode("::",$a)); } static function bar2() { echo __METHOD__,"\n"; } } $foo = new foo; $foo->bar1(); having no idea what it is that your actually trying to achieve, it's hard to tell whether any percieved limitation is justified. you might consider taking a look at reflection: http://nl2.php.net/reflection > > BTW: I'm running PHP v5.2.0-8 build and distributed by Debian (etch1). > > Thanks again and regards, Paul. > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php