PHP中的动态对象调用

时间:2012-09-07 08:09:36

标签: php codeigniter object

我在codeigniter中开发。我的程序会自动创建它的数据库,所以我为每个表创建一个createScheme()方法。我试着像这样调用所有这些方法:

public function createDB()
{
    $tables = array('user', 'manufacturer', 'device');

    foreach ($tables as $i => $table) {
        $this->load->library($table);
        $this->{$table}::createScheme();
    }

}

这会产生错误:

  

解析错误:语法错误,意外的T_PAAMAYIM_NEKUDOTAYIM   /var/www/clients/client0/web79/web/application/controllers/welcome.php   在第22行

我该怎么做?

2 个答案:

答案 0 :(得分:2)

尝试

$this->{$table}->createScheme();

另见scope resolution operator

答案 1 :(得分:2)

T_PAAMAYIM_NEKUDOTAYIM是希伯来语,它指的是PHP的范围解析运算符(“::”)。如果您收到此消息,则表示PHP会看到一个类名,并希望您使用范围解析运算符访问它。

因此createScheme()不是静态的,而是普通的类方法。

使用

$this->{$table}->createScheme();