を返すISSET関数を記述、配列、配列要素、オブジェクト、例:
$foo = isset($array['element']) ? $array['element'] : null;
$foo = isset($nestedArray['element']['key']) ? $nestedArray['element']['key'] : null;
$foo = isset($object->prop) ? $object->prop : null;
$foo = isset($object->chain->of->props) ? $object->chain->of->props : null;
この繰り返し論理を(単純な)関数として書く方法はありますか?たとえば、私は試しました:
function myIsset($mixed)
{
return isset($mixed) ? $mixed : null;
}
上記の機能は動作するように見えますが、実際にはそうではありません。たとえば、$object->prop
が存在せず、私がmyIsset($object->prop))
を呼び出した場合、関数が呼び出される前に致命的なエラー:Undefined property: Object::$prop
が発生します。
どのように私はそのような関数を書くだろうか?それも可能ですか?
hereとhereといういくつかのソリューションが掲載されていますが、これらのソリューションはアレイ専用です。あなたは、実際にはそれが好きで書くことができる
私はそれをより効率的に行うことはできません。代わりに、私はあなたがそれを使用する回数を減らすように努力するだろう、*千人*はあまりにも多くのようだ。私は、変数のブロック全体が設定されているかどうかを確認するので、1つをチェックすることで、さまざまな設定を行う機会が与えられます。 – jeroen
@jeroenこれはどこでも頻繁にチェックしなければならない場合は "コードの匂い"です。 –