いつものごとく、即戦力になるための 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]
<?php
App::uses(‘AppModel’, ‘Model’);
class Company extends AppModel {
public $hasMany = array(
‘Customer’ => array(
‘className’ => Customer,
‘foreignKey’ => ‘company_id’,
‘dependent’ => false, ) ); }
[/php]
“‘className’ => Customer,”となっていますが、正しくは“‘className’ => ‘Customer’,”ですね。Customerのシングルクォーテーションが抜けてました。
補足説明
間違い探しをしているときに合わせて読んでいた、CakePHP2 実践入門 (WEB+DB PRESS plus)のP114にhasmanyのオプションの1つとして、’className’について説明されています。
‘className’は所属先のデータを扱うモデルクラス。省略時は設定名と同一。
今回、所属先のデータは’Customer’で、その指定が正しくできていなかったので、”Use of undefined”になったんだと思います。
〔参考サイト〕