libro
www.tuyano.com
初心者のためのCakePHP3 プログラミング入門

モデルとデータベース (3/5)

作成:2015-09-12 10:40
更新:2015-09-12 10:40

■エンティティクラスについて

では、作成されたモデルを見てみましょう。「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フィールドへのアクセスは保護され、それ以外のものはアクセスが許可されるようになります。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

<?php
namespace App\Model\Entity;

use Cake\ORM\Entity;

class Person extends Entity
{

    protected $_accessible = [
        '*' => true,
        'id' => false,
    ];
}
※関連コンテンツ

「初心者のためのCakePHP3 プログラミング入門」に戻る