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文も併用。