コンテンツにスキップ

バリデーション

はじめに

本サイトにつきまして、【IT技術の知見】はじめに - 俺の技術ノート をご認識のほど宜しくお願いいたします。


01. バリデーション

バリデーションの必要性の有無

▼ 不要な場合

DB から読み込んだ後に直接的に表示する値の場合、DB で Null にならないように制約をかけられる。

そのため、値が想定通りの状態になっているかをあらためてバリデーションする必要はない。

▼ 必要な場合

DB からの値を直接的に表示する場合と異なり、新しく作られる値を使用する場合、その値が想定外の状態になっている可能性がある。

そのため、値が想定通りの状態になっているかをバリデーションする必要がある。


バリデーションパターンとバリデーション関数の対応

✅:TRUE になる。

空欄:FALSE になる。

バリデーションパターン isset($var)、!is_null($var) if($var)、!empty($var)
null
0 ✅
1 ✅ ✅
"" (空文字) ✅
"あ" ✅ ✅
array(0) ✅
array(1) ✅ ✅
使いどころ null のみをバリデーションしたい場合 null、0、""、[] をバリデーションしたい場合


02. インスタンスのバリデーション

等価演算子

▼ イコールが 2 個の場合

同じオブジェクトから別々に作られたインスタンスであっても、『同じもの』として認識される。

<?php

class Example {};

if(new Example == new Example){
    echo "同じです";
} else { echo "異なります"; }

// 実行結果
// 同じです

▼ イコールが 3 個の場合

同じオブジェクトから別々に作られたインスタンスであっても、『異なるもの』として認識される。

<?php

class Example {};

if (new Example === new Example) {
    echo "同じです";
} else {
    echo "異なります";
}

// 実行結果
// 異なります

同じインスタンスの場合のみ、『同じもの』として認識される。

<?php

class Example {};

$a = $b = new Example;

if ($a === $b) {
    echo "同じです";
} else {
    echo "異なります";
}

// 実行結果
// 同じです