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ってフィールドが存在しない場合は当然エラーになりますので。。。ちょうつらいことになると思います。。。