Looks sort of like you're trying to accomplish a singleton pattern, using the App class to control them all. Try this approach instead: <?php // Base / abstract class that defines a basic singleton pattern abstract class SingletonProvider { // Singleton pattern protected static $_instance; public static function getInstance() { if(static::$_instance == null) { static::$_instance = new static(); } return static::$_instance; } // Private constructor private function __construct() { } } // A specific provider class definition that inherits the singleton pattern class MyProvider extends SingletonProvider { // Class-specific instance reference protected static $_instance; // --- CLASS INSTANCE-SPECIFIC PROPERTIES AND METHODS BELOW HERE --- // Class properties public $FieldX; protected function __construct() { $this->FieldX = "Hello World!"; } } // Another specific provider class definition that inherits the singleton pattern class MyOtherProvider extends SingletonProvider { // Class-specific instance reference protected static $_instance; // --- CLASS INSTANCE-SPECIFIC PROPERTIES AND METHODS BELOW HERE --- // Class properties public $FieldY; protected function __construct() { $this->FieldY = "Foo"; } public function MakeMoreExciting($sentence) { return $sentence . "!!!!!!!!"; } } // Usage examples echo MyProvider::getInstance()->FieldX; // Hello World! echo MyOtherProvider::getInstance()->FieldY; // Foo echo MyOtherProvider::getInstance()->MakeMoreExciting("Hi there"); // Hi there!!!!!!!!