php变量静态方法

时间:2012-09-05 13:45:12

标签: php class variables object static

我有这段代码:

$node = new Node();

现在我想让'Node'对象动态化 我从配置类中获取动态名称,这有效:

$var = Config::instance('modules/activities/config')->get('className');
$node = new $var();

但是我该怎么写这一行呢? 这样做不起作用:

$node = new Config::instance('modules/activities/config')->get('className')();

4 个答案:

答案 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();