1

私はcodeigniterで開発しています。私のプログラムは自動的にデータベースを作成するので、すべてのテーブルに対してcreateScheme()メソッドを作成します。私はこれらすべてのメソッドを次のように呼び出そうとします:

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

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

}

これはエラーを作成します:

解析エラー:構文エラー、22行目の/var/www/clients/client0/web79/web/application/controllers/welcome.phpの予期しないT_PAAMAYIM_NEKUDOTAYIM

どうすればいいですか?

4

2 に答える 2

2

試す

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

スコープ解決演算子も参照してください

于 2012-09-07T08:12:02.870 に答える
2

T_PAAMAYIM_NEKUDOTAYIMはヘブライ語であり、PHPのスコープ解決演算子(「::」)を参照します。このメッセージが表示された場合は、PHPがクラス名を認識し、スコープ解決演算子を使用してクラス名にアクセスすることを期待していることを意味します。

したがって、createScheme()は静的ではなく、通常のクラスメソッドです。

使用する

$this->{$table}->createScheme();
于 2012-09-07T08:13:42.480 に答える