CakePHP 3.5 Model\Tableクラスの定数をインスタンスから参照してたら

いまどきのPHPはクラス内にconstで定義した定数にアクセスするのに、newしたインスタンス変数に::でつないで指定してやることもできる。

$class = new MyClass();
echo $class::MY_CONSTANT."\n";

(できるようになったのはPHP 5.3.0 以降。昔はクラス名に::でつないで指定してた)

その前提で、PHP 7.1 + CakePHP 3.5のコントローラでこんなコードを書いていた。

'status' => $this->Schedules::STATUS_REGIST,

そーしたら、PHP 5.6.15 だと実行時にシンタックスエラーになることが判明。

$this->Schedulesに違いがあるのか? debug()でこいつを確認すると、ちゃんと定数を記述しているSchedulesTableクラスのオブジェクトになっていて、問題がないように見える。

何で???

究明せずクラス名を使うことにしました。名前空間の指定も含めると長くなるので、冒頭でuse文も併用。