Объявление новой статической переменной вне класса

Есть ли способ объявить новые статические переменные вне этого класса, даже если он не установлен в классе?

// Using this class as a static object.
Class someclass {
    // There is no definition for static variables.
}

// This can be initialized
Class classA {
    public function __construct() {
        // Some codes goes here
    }
}

/* Declaration */
// Notice that there is no static declaration for $classA in someclass
$class = 'classA'
someclass::$$class = new $class();

Как это можно сделать?

Спасибо за ваши советы.

2 ответа

Решение

Это не может быть сделано, потому что статические переменные, ну... СТАТИЧЕСКИЕ и поэтому не могут быть объявлены динамически.

РЕДАКТИРОВАТЬ: Вы можете попробовать использовать реестр.

class Registry {

    /**
     * 
     * Array of instances
     * @var array
     */
    private static $instances = array();

    /**
     * 
     * Returns an instance of a given class.
     * @param string $class_name
     */
    public static function getInstance($class_name) {
        if(!isset(self::$instances[$class_name])) {
            self::$instances[$class_name] = new $class_name;
        }

        return self::$instances[$class_name];
    }

}

Registry::getInstance('YourClass');

__get()Волшебный метод в PHP вызывается при доступе к несуществующему свойству объекта.

http://php.net/manual/en/language.oop5.magic.php

У вас может быть контейнер, внутри которого вы с этим справитесь.

Редактировать:

Видеть это:

Magic __get get для статических свойств в PHP

Другие вопросы по тегам