|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Apparently there is no 'good' way to invoke static class functions
from within the call_user_function in PHP 5 (I'm using PHP 5 1.2). Example: ------------ <?php // Does php support something akin to C style function pointers?? // class testClass { static function myFunction( $parm1 ) { echo 'Hello, parm1 = '.$parm1."\n"; } } $className = 'testClass'; $fnName= 'myFunction'; // Are these legal? //($fnPtr)('abc'); ... NOT LEGAL //$fnPtr('abc'); ... NOT LEGAL // call_user_func( $className, $fnPtr, 'abc' ); // Gah... need to instantiate static class members... $x = new $className(); $x->{$fnName}('abc'); ?> ---- There is documentation on php.net for call_user_func on how to invoke it with a non-static class member, eg: call_user_func( 'classname', 'fnName', 'param1'... ). The way that I've got it working feels like a kludge to me as I'm having to instantiate an object that is never going to be used. (I'm using static functions within the class as er functions for my application's data classes). Thanks, - Craig Taylor |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
On Oct 25, 2:02 pm, Craig Taylor <ctalk...@gmail.com> wrote:
> Apparently there is no 'good' way to invoke static class functions > from within the call_user_function in PHP 5 (I'm using PHP 5 1.2). > > Example: > ------------ > <?php > // Does php support something akin to C style function pointers?? > // > > class testClass > { > static function myFunction( $parm1 ) > { > echo 'Hello, parm1 = '.$parm1."\n"; > } > > } > > $className = 'testClass'; > $fnName= 'myFunction'; > > // Are these legal? > //($fnPtr)('abc'); ... NOT LEGAL > //$fnPtr('abc'); ... NOT LEGAL > > // call_user_func( $className, $fnPtr, 'abc' ); > > // Gah... need to instantiate static class members... > $x = new $className(); > $x->{$fnName}('abc'); > ?> > > ---- > > There is documentation on php.net for call_user_func on how to invoke > it with a non-static class member, eg: call_user_func( 'classname', > 'fnName', 'param1'... ). > > The way that I've got it working feels like a kludge to me as I'm > having to instantiate an object that is never going to be used. (I'm > using static functions within the class as er functions for my > application's data classes). > > Thanks, > > - Craig Taylor Call a class (static) method: call_user_func(array('testClass', 'myFunction'), $arg1, $arg2, $arg3); Call an instance method: $t = new testClass(); call_user_func(array($t, 'myFunction'), $arg1, $arg2, $arg3); |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
Just what I was looking for...
When I had looked on php.net/call_user_func for this situation I saw the example and misread it as not having the arrays - rechecked after your post and my eyes are seeing it now... (that or the evil gremlin that sneaks in my code is now messing with other people's sites too... ) Thanks, On Oct 25, 3:20 pm, ZeldorBlat <zeldorb...@gmail.com> wrote: > On Oct 25, 2:02 pm, Craig Taylor <ctalk...@gmail.com> wrote: > > > > > Apparently there is no 'good' way to invoke static class functions > > from within the call_user_function in PHP 5 (I'm using PHP 5 1.2). > > > Example: > > ------------ > > <?php > > // Does php support something akin to C style function pointers?? > > // > > > class testClass > > { > > static function myFunction( $parm1 ) > > { > > echo 'Hello, parm1 = '.$parm1."\n"; > > } > > > } > > > $className = 'testClass'; > > $fnName= 'myFunction'; > > > // Are these legal? > > //($fnPtr)('abc'); ... NOT LEGAL > > //$fnPtr('abc'); ... NOT LEGAL > > > // call_user_func( $className, $fnPtr, 'abc' ); > > > // Gah... need to instantiate static class members... > > $x = new $className(); > > $x->{$fnName}('abc'); > > ?> > > > ---- > > > There is documentation on php.net for call_user_func on how to invoke > > it with a non-static class member, eg: call_user_func( 'classname', > > 'fnName', 'param1'... ). > > > The way that I've got it working feels like a kludge to me as I'm > > having to instantiate an object that is never going to be used. (I'm > > using static functions within the class as er functions for my > > application's data classes). > > > Thanks, > > > - Craig Taylor > > Call a class (static) method: > > call_user_func(array('testClass', 'myFunction'), $arg1, $arg2, $arg3); > > Call an instance method: > > $t = new testClass(); > call_user_func(array($t, 'myFunction'), $arg1, $arg2, $arg3); |
|
![]() |
| Outils de la discussion | |
|
|