<[EMAIL PROTECTED]> wrote�:
>>>> I guess I am going to have to write stupid code such as:
>>>>
>>>> switch ($param1) {
>>>> case 'parser1':
>>>> return parser1::method();
>>>> case 'parser2':
>>>> return parser2::method();
>>>> }
>>>
>>> call_user_func(array($param1, 'method'));
>>
>> No. Undefined variable this in $param1. Get it ?
>>
> No. The code you displayed (in the switch block) is 100% identical to the
> code Derick offered (except for the fact that Derick's example will handle
> any class name while yours is limited).
>
> $classname::method() === call_user_func(array($classname,'method'));
No. $classname::method() is illegal and is in no case === to
call_user_func(array($classname,'method')) as you state it.
Class foo {
function bar() {
echo $this->param;
}
}
Class MyObject {
var $param;
function MyObject($param) {
$this->param = $param;
foo::bar();
}
}
$obj = new MyObject('out of this');
will print 'from MyObject'.
While,
Class MyObject {
var $option;
function MyObject($option) {
$this->option = $option;
call_user_func(array('foo', 'bar'));
}
}
will return 'Undefined variable: this'...
This is why, if you need to access $this, you will choose to use ::
But because of the weird limitation that does not allow you to use it in a
dynamic way ( $var::method() ), you will need to use stupid switch like I
did above. Get it ?
> Get it?
>
> -Pollita
>
> P.S. - This thread has gone on long enough, either TRY IT, or take it to
> [EMAIL PROTECTED] where it belongs so that they can tell you the
> same thing.
Well, if you think that this thread is too long and that this is not a
problem or a limitation of PHP, good on you. You probably never had to deal
with such a case.
I just wanted to make sure there was really no other way than using the
stupid switch scenario.
Bertrand Mansion
Mamasam
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php