Access Non Static Method From a Static Method

Inside a static method the pseudo-variable $this is not available. So, it is not possible to call a non static method from inside a static method directly. But using a trick we can call a non static method from a static method.
The trick is as soon as the class object has been instantiated I have stored the pseudo-variable $this into a global variable using a class constructor. Now on the static method call, I have used that stored class instance to access the non static method. See the code segment below:
class PopStar
{   
   public function __construct()
   {
      $GLOBALS['instance'] = $this;      
   }
      
   public static function showBestPopStarName()
   {
      return $GLOBALS['instance']->getBestPopStarName();      
   }
   
   public function getBestPopStarName()
   {
      return 'Taylor Swift';
   }
}   

$obj = new PopStar;
echo 'Best Pop Star is: ' . $obj->showBestPopStarName();

The above code segment will have the following output:
Best Pop Star is: Taylor Swift

Comments