Is there a way to access one instance of a class inside functions in PHP? Like this:
include("class.php"); $bla=new Classname(); function aaa(){ $bla->DoSomething(); //Doesn't work. } $bla->DoSomething(); //Works. If I interpret your question correctly, then the proper way to do this is create a singleton class.
class Singleton { private static $instance; private function __construct() {} private function __clone() {} public static function getInstance() { if (!Singleton::$instance instanceof self) { Singleton::$instance = new self(); } return Singleton::$instance; } public function DoSomething() { ... } } You would call this in your function as follows :
function xxx() { Singleton::getInstance()->DoSomething(); } Use global:
function aaa() { global $bla; $bla->DoSomething(); } Works on all variables, not just classes.
As already answered, you could use a global variable to store the class instance, but it sounds to me like you should consider using something like the Singleton pattern instead for a cleaner implementation.
You can find a simple example of a singleton class here.
If you want to enforce using only a single instance of a class throughout your application, you should use a singleton, not a global. You could do something like this:
class Classname { private static $instance; private function __construct() {...} public function doSomething() {...} // The singleton method public static function singleton() { if ( !isset(self::$instance) ) { self::$instance = new self; } return self::$instance; } private function __clone() { /* do nothing here*/ } } function aaa() { Classname::getInstance()->doSomething(); }