Having a little trouble with this static ‘inheritance’ in php 5.3
I need to test if a static function exists in static class but I need to test it from inside a parent static class.
I know in php 5.3 I can use the ‘static’ keyword to sort of simulate ‘this’ keyword.
I just can’t find a way to test if function exists.
Here is an example:
// parent class
class A{
// class B will be extending it and may or may not have
// static function name 'func'
// i need to test for it
public static function parse(array $a){
if(function_exists(array(static, 'func'){
static::func($a);
}
}
}
class B extends A {
public static function func( array $a ){
// does something
}
}
So now I need to execute B::parse();
the idea is that if subclass has a function, it will be used,
otherwise it will not be used.
I tried:
function_exists(static::func){}
isset(static::func){}
These 2 do not work.
Any ideas how to do this?
By the way, I know about the possibility to passing a lambda function as a workaround, this is not an
option in my situation.
I have a feeling there is a very simple solution that I just can’t think of right now.
Now I need to call
You can’t use
function_existsfor classes and objects (methods), only functions. You have to usemethod_existsoris_callable.issetonly works with variables. Also,staticdoes not simulate$this, they are two completely different things.That being said, in that specific case, you have to use
is_callablewith a quotedstatickeyword:or…