以下のようにしますと、引数が2つともないのでエラーは複数出したいのですが、しかし1つしか出すことができません。
エラーを返しているのは
return $e->getMessage();
の部分になるかと思いますが、ここにエラーを複数返すにはどうしたらいいでしょうか?
このようなイメージです。
return [
$e->getMessage(),
$e->getMessage(),
$e->getMessage()
];
<?php var_dump( myValid( null, null ) ); function myValid( $process, $name ){ $ok = [ 'one'=>['a','b'], 'two'=>['x','y','z'] ]; try { if ( ! isset($process) ) throw new Exception('$processがない',1); if ( ! isset($name) ) throw new Exception('$nameがない',2); if ( ! in_array( $name, $ok[$process], true ) ) { throw new Exception('$nameが不正',3); } } catch(Exception $e) { return $e->getMessage(); } return $name; }
試したこと
考えたんですが、こういう風にした方がいいでしょうか?
これならなぜエラーなのか、渡された値もわかりますし。
tryとかthrowで値がわかる方法とかありますかね?
<?php var_dump( myValid( null, null ) ); function myValid( $process, $name ){ $error = []; $ok = [ 'one'=>['a','b'], 'two'=>['x','y','z'] ]; if ( ! isset($process) ) $error[] = ['$processがない'=>$process]; if ( ! isset($name) ) $error[] = ['$nameがない'=>$name]; if ( empty($error) ) { if ( ! in_array( $name, $ok[$process], true ) ) { $error[] = ['$nameが不正'=>$name]; } } if ( ! empty($error) ) { return $error; }else{ return $name; } }
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー