Re: T_PAAMAYIM_NEKUDOTAYIM

From: Date: Mon, 16 Dec 2002 22:56:03 +0000
Subject: Re: T_PAAMAYIM_NEKUDOTAYIM
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-92541@lists.php.net to get a copy of this message
<pollita@php.net> 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 > php-general@lists.php.net 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

« previous php.dev (#92541) next »