phpcon2017福岡はN.Y.に行っていたので行けなかったので今更ながらYoutubeで見ました。
気になる動画だけチェックしましたので、メモとして残しておきます。
[phpconfuk2017] PHP7で堅牢なコードを書く – 例外処理、表明プログラミング、契約による設計 和田 卓人
・関数の定義をミスしにくい設計にする。
予防<<対策
つまり、if連発の型チェックや、サイズをチェックするとかではなく、実引数の段階でチェックする。
function findAll($params)
↓
function findAll(int $assignedTo, string $status)
これをさらに$statusの値を制限することにより間違わないコードを作ることが出来る。
ここで使うのはEnum型。
final class Status extends Enum
{
const OPEN=’OPEN’;
const NEW=’NEW’;
const FIXED=’FIXED’;
}
$status = new Status(Status::OPEN);
$status = new Status(‘OPEN’);
上記のような形で定義、変数を作り以下の関数定義を行うことで値を絞ることが出来る。
function findAll(int $assignedTo, Status $status)
・PDOのモードでPDO::ERRMODE_EXCEPTIONにするべきだが、設定の段階でこの設定になっていないというのを防ぐにはassertを使う
以下はpdoをプライベート変数でもっているクラスの各メソッドなどに定義する。
assert($this->pdo->getAttribue(PDO::ATTR_ERRMODE)= === PDO::ERRMODE_EXCEPTION);
しかし、このままだと警告が出るだけ。デフォルトは警告のみ。
php.iniをいじることで、表明違反でプログラムを落とすことが出来る。
表明コードは、zend.assertionsのモードを変えることでコストのかからない動作にすることができる。(本番と開発環境という意味だと思う)