NYCPHP Meetup

NYPHP.org

[nycphp-talk] Static Method Referencing

Daniel Kushner kushner at gmail.com
Wed Feb 16 01:29:47 EST 2005


Hi Hans,

I can't seem to find a way to do this by dereferencing, but yet
another way of doing it:

call_user_func(array('MyClass', $this->StaticMethod), 'NoWorks');

-Daniel



On Tue, 15 Feb 2005 11:12:35 -0500, Hans Zaunere <lists at zaunere.com> wrote:
> 
> > > I this expected behavior or a bug?  Do I have to set the method's
> > > name to a $tmp variable before using it as a reference to a static
> > > method?  Is there some other way to do it that I'm forgetting?
> >
> > self::staticMethod('foo');
> >
> > Pages 28-9, 35 in "Upgrading to PHP 5." :)
> 
> I don't have the book, but from the code snippet above, that's not it anyway.  StaticMethod is a property, containing the name of a static method to call.
> 
> Maybe my choice of naming the property was confusing, so here is another:
> 
> class MyClass
> {
>    private $StaticMethodName = 'SayHello';
> 
>    static public function SayHello( $name ) {
> 
>       echo "\n\nSay Hello, $name!\n\n";
>    }
> 
>    public function HelloWorks() {
> 
>       // this dereferences the static method call, calling the SayHello() method
>       $tmp = $this->StaticMethodName;
>       MyClass::$tmp('Works');
>    }
> 
>    public function HelloNoWorks() {
> 
>       // this does not
>       MyClass::$this->StaticMethodName('NoWorks');
> 
>       // also does not work (parse error)
>       // MyClass::{$this->StaticMethodName}('NoWorks');
>    }
> }
> 
> $myobj = new MyClass;
> $myobj->HelloWorks();
> $myobj->HelloNoWorks();
> 
> Perhaps this is just a limitation of the parser, but I don't see any reason it shouldn't work, so perhaps a bug.
> 
> Basically I'm seeing that's there's no way to dereference a property into a static method call, whereas a regular variable can be dereferenced in this respect.
> 
> For additional clarification of the underlying goal, a non-OOP example:
> 
> function my_func() {
>    echo 'This is my_func';
> }
> 
> $thefunc = 'my_func';
> $thefunc();
> 
> Calls a function by the name of my_func()
> 
> 
> ---
> Hans Zaunere
> President, Founder
> 
> New York PHP
> http://www.nyphp.org
> 
> AMP Technology
> Supporting Apache, MySQL and PHP
> 
> _______________________________________________
> New York PHP Talk Mailing List
> AMP Technology
> Supporting Apache, MySQL and PHP
> http://lists.nyphp.org/mailman/listinfo/talk
> http://www.nyphp.org
>



More information about the talk mailing list