PHP中的动态对象调用


Dynamic Object call in PHP

我在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

我该怎么做?

尝试

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

另请参阅范围解析操作符

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

所以createScheme()不是一个静态的,而是一个普通的类方法。

使用

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