1. TOPTOP
  2. Webサービス
  3. CakePHP

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]

1

“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”になったんだと思います。

〔参考サイト〕