CakePHPで「Warning (2): Illegal offset type」が出てたので調べた

CakePHPで画面を開発しているのですが、開発環境で画面に「Warning (2): Illegal offset type・・・」なんて出てるみたいだったので、ちょっと見てた。

原因

このメッセージは何かというと、PHPの配列に関するエラーで、連想配列のキーに「配列」を指定したら発生します。

配列またはオブジェクトをキーとして使用することはできません。 これを行なうと、warning: Illegal offset type が発生します。

PHP: 配列 - Manual

発生している箇所

画面のエラー文言の詳細を見ると、(CakePHPの基盤クラス)「Model::setSource()」のXX行目で発生しているようなので、そこを見てみると、

$this->table = $this->useTable = $tableName;
$this->tableToModel[$this->table] = $this->alias;

つまり、「tableToModel」という配列の「$this->table」に配列が入ってしまっているらしい。
で、各テーブル用のModelクラスを見ると「$useTable」変数に、配列形式で指定してしまっている。。これが、影響しているに違いない。

var $useTable = array('users');

そこで、次のように修正すると、直りました。

var $useTable = 'users';

なぜ、こんな記述にしたんだろうか。。わからん。

ちなみに

core.phpの設定で、Debugモードだと、画面とログの両方にエラー出力されるが、

Configure::write('debug', 2); // Debugモード

本番モードの設定であれば、画面にもログにも出力されない。

Configure::write('debug', 0); // 本番モード