CakePHP アクセサとミューテーター

CakePHPのエンティティではget/setインターフェイスに加えて、プロパティをカスタマイズするアクセサーメソッドとミューテーターメソッドを使うことができます。今回はそのアクセサとミューテーターについて紹介します。

アクセサ

Cake\ORM\Entity::get($field)

アクセサーは _get + フィールド名のキャメルケースという命名法に従います。例えば名前の一文字目のみ大きくして返したい時は次のように実装することができます。

namespace App\Model\Entity;

use Cake\ORM\Entity;

class Book extends Entity
{
    protected function _getName($name)
    {
        return ucfirst($name);
    }
}

アクセサーは以下のようにプロパティーを取得する際に実行されます。


echo $book->name; echo $book->get('name');

ミューテーター

Cake\ORM\Entity::set($field = null, $value = null)

ミューテーターは _set + フィールド名のキャメルケースという命名法に従います。例えば名前を全て大文字にして設定したい時は次のように実装することができます。

namespace App\Model\Entity;

use Cake\ORM\Entity;

class Book extends Entity
{
    protected function _setName($name)
    {
        return strtoupper($name);
    }

}

ミューテーターも同様に、以下のようにプロパティーを設定するときに実行されます。


$book->name = 'harry potter'; //HARRY POTTER $book->set('name', 'Harry Potter'); //HARRY POTTER