$static = !(isset($this) && get_class($this) == __CLASS__);
if ($static) {
return self;
} else {
return $this;
}
in class example:
class Foo {
function bar() {
$static = !(isset($this) && get_class($this) == __CLASS__);
if ($static) {
return self;
} else {
return $this;
}
}
}
or simply create below function to test:

class A
{
function foo()
{
if (isset($this)) {
echo '$this is defined (';
echo get_class($this);
echo ")\n";
} else {
echo "\$this is not defined.\n";
}
}
}
How do I check in PHP that I'm in a static context (or not)? Check if current function called statically or not