CakePHPでNotice (8): Use of undefined constant Customerが出た!原因と対処方法
目次
いつものごとく、即戦力になるための PHPシステム開発の教科書を写経しているとまたまたエラーが発生!
問題の内容
この本のP147~p152で、
- Customer.php
- Company.php
- Prefecture.php
の3つのモデルを記述して、ファイルをそれぞれUPしたら、こんなエラーが出ました。
- Notice (8): Use of undefined constant Customer – assumed ‘Customer’ [CORE/Cake/Utility/ClassRegistry.php, line 168]
“Notice (8): Use of undefined constant Customer”でぐぐってみましたが、私の苦手な英文や、素のPHPに関する検索結果しか返ってこなかった…。
エラーの内容からして、「Customerというモデルクラスが定義されてまへんで~」というところまでは分かるんですが…。
解決方法
仕方がないので、3つあるモデルファイルをじーっと眺めていたら、間違いを発見しました。注目するのは6行目です。
<?php App::uses('AppModel', 'Model'); class Company extends AppModel { public $hasMany = array( 'Customer' => array( 'className' => Customer, 'foreignKey' => 'company_id', 'dependent' => false, ) ); }
“‘className’ => Customer,”となっていますが、正しくは“‘className’ => ‘Customer’,”ですね。Customerのシングルクォーテーションが抜けてました。
補足説明
間違い探しをしているときに合わせて読んでいた、CakePHP2 実践入門 (WEB+DB PRESS plus)のP114にhasmanyのオプションの1つとして、’className’について説明されています。
‘className’は所属先のデータを扱うモデルクラス。省略時は設定名と同一。
今回、所属先のデータは’Customer’で、その指定が正しくできていなかったので、”Use of undefined”になったんだと思います。
〔参考サイト〕