Объявление новой статической переменной вне класса
Есть ли способ объявить новые статические переменные вне этого класса, даже если он не установлен в классе?
// 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
У вас может быть контейнер, внутри которого вы с этим справитесь.
Редактировать:
Видеть это: