LoginSignup
1
1

More than 5 years have passed since last update.

CakePHP3でEntityのプロパティがない場合Exceptionを吐くプラグインを作成した

Last updated at Posted at 2017-02-01

CakePHP3でEntityのプロパティがない場合Exceptionを吐くプラグインを作成した

前段

CakePHP3になって色々便利になったはなったんですが、困ったこともボチボチある感じ。

困ったことの一つにEntityでそのプロパティがない場合にnullが返ることだったりします。

<?php
$entity = $this->Topics->get($id);
// titleはあるけどtypoした
// nullが出力
echo $entity->tilte;

これ、CakePHP2だとundefined indexが出て、typoしたとかわかるんですが、CakePHP3だとnullが出力されてしまうので、気づきにくいです。

ただの一覧とかならまだいいんですが、計算ロジックの間とかだとなかなかミスに気づけないことが多くて困ってました。

つーわけで

一時間ちょいで作ってみた

使い方(READMEそのまんまw)

Entity

<?php
namespace App\Model\Entity;

use Cake\ORM\Entity;
use EntityColumnCheck\Model\Entity\EntityColumnCheckTrait;

class Topic extends Entity
{
    // 追加項目
    use EntityColumnCheckTrait;
    protected $_accessible = [
        '*' => true,
        'id' => false
    ];
    // 例外として設定するカラム
    protected $entityColumnCheckAllowField = [
        'file',
        'img'
    ];

    //&getメソッドをoverride
    public function &get($property)
    {
        $value = parent::get($property);
        $this->getEntityColumnCheck($property);
        return $value;
    }
}

まとめ

まだ、実践投入もしてないので設定が足りてるかとかよくわからない感じ。

使えるといーなーとぼんやり思ってるところ。

なお、すでに動いているプログラムに突っ込むのはあんまりお勧めできません。

if (is_null($entity->hoge)) {

}

みたいな判定入れて、hogeってフィールドが存在しない場合は当然エラーになりますので。。。ちょうつらいことになると思います。。。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1