モデルとデータベース (3/5)
作成:2015-09-12 10:40
更新: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を継承する
クラスの定義は、こんな具合に記述されます。
・$_accessibleについて
デフォルトで生成されるクラスは、空ではありません。_accessibleというプロパティが用意されています。これはテーブルのフィールドに対する保護の設定です。ここでは「*」「id」という2つの値が用意されていますね。これにより、idフィールドへのアクセスは保護され、それ以外のものはアクセスが許可されるようになります。
「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フィールドへのアクセスは保護され、それ以外のものはアクセスが許可されるようになります。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
<?php namespace App\Model\Entity; use Cake\ORM\Entity; class Person extends Entity { protected $_accessible = [ '*' => true, 'id' => false, ]; }
※関連コンテンツ
「初心者のためのCakePHP3 プログラミング入門」に戻る