有没有办法在该类之外声明新的静态变量,即使它没有在类中设置?
// 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();
怎么做?
感谢您的建议。
答案 0 :(得分:2)
__get()
魔术方法。
http://php.net/manual/en/language.oop5.magic.php
你可能有一个容器可以处理它。
编辑:
见:
答案 1 :(得分:2)
这是不可能的,因为静态变量...... STATIC ,因此无法动态声明。
修改强> 您可能想尝试使用注册表。
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');