我有这段代码:
$node = new Node();
现在我想让'Node'对象动态化 我从配置类中获取动态名称,这有效:
$var = Config::instance('modules/activities/config')->get('className');
$node = new $var();
但是我该怎么写这一行呢? 这样做不起作用:
$node = new Config::instance('modules/activities/config')->get('className')();
答案 0 :(得分:1)
这是PHP 5.4中的一种新语言功能
已添加实例化的类成员访问权限,例如(新Foo) - > bar()
请参阅http://docs.php.net/manual/en/migration54.new-features.php
答案 1 :(得分:0)
我的同事帮助了我,我在助手课上做了一个静态功能:
public static function factory($name = '', $var = NULL)
{
$object = new $name((isset($var)) ? $var : '');
return $object;
}
现在这是我的代码(看起来有点乱):
$node = Helper::factory(Config::instance('modules/activities/config')->get('className'), $var);
答案 2 :(得分:0)
如果修改实例方法以使其返回对象,则应该能够使用该语法。类似的东西:
public static function instance()
{
if (!self::$instance)
self::$instance = new new Config();
return self::$instance;
}
答案 3 :(得分:-3)
简单。要将它们写在一行中,请不要在它们之间使用换行符:
$var = Config::instance('modules/activities/config')->get('className');$node = new $var();