では、作成されたモデルを見てみましょう。「
src」フォルダの中の「
Model」フォルダを開いてみてください。この中には、3つのフォルダが用意されています。
「Behavior」フォルダ――ビヘイビアという、モデルのヘルパー機能を保管します。
「Entity」フォルダ――エンティティのソースコードファイルを用意します。
「Table」フォルダ――テーブルのソースコードファイルを保管します。
まずは、「
エンティティ」から見てみましょう。「
Entity」フォルダを開くと、その中に「
Person.php」という名前のファイルが用意されています。これが、
personsテーブル用に生成されたエンティティのソースコードファイルです。よく見ると、名前が「
Persons」ではなく、「
Person」であることに気がついたでしょう。エンティティは、基本的にテーブルの「単数形」で名付けられます。
このファイルを開くと、比較的シンプルなソースコードが作成されていることがわかります(下のリスト欄参照、コメントは省略してあります)。ポイントをまとめておきましょう。
・名前空間はApp\Model\Entity後述しますが、エンティティは「
Entity」というクラスを継承して作成されます。この
Entityクラスが用意されているのが、
App\Model\Entityです。エンティティとして作成されるクラスは、同じ名前空間に配置します。
・Entityをuseするエンティティは
Entityクラスを継承していますので、このクラスを
useしておきます。
Entityのソースコードは、
Cake\ORM\Entityという名前空間で配置されているので、これを
useします。
・Entityを継承するクラスの定義は、こんな具合に記述されます。
class Person extends Entity
既に何度も触れたように、エンティティは「
Entity」クラスを継承します。実は、エンティティがエンティティとして扱われるのに必要なのは、たったそれだけです。メソッドやフィールドなどの実装は特に必要ないのです(ここではちょっとありますが……)。
・$_accessibleについてデフォルトで生成されるクラスは、空ではありません。
_accessibleというプロパティが用意されています。これはテーブルのフィールドに対する保護の設定です。ここでは「
*」「
id」という2つの値が用意されていますね。これにより、idフィールドへのアクセスは保護され、それ以外のものはアクセスが許可されるようになります。