計算を完了するために変数のセットが必要な場合は、変数が空の場合は「終了」という条件付きで、以下のような変数を定義するのが最善でしょうか?または、より良い選択肢ですか?
まず、コードには何も表示されません。すべての引数が存在していても、関数自体は全く問題ではないので、関数自体は気にする必要はありません。実際にPHPを使用すると、必須の引数を省略した場合、あなたを平手打ちします:
function doTheCalculations($arg1, $arg2) {
...
}
すなわち
$x = doTheCalculations();
それはそれは必要なすべてのデータを持っていない場合は、自分自身を訴える確保するために、このメソッドを呼び出すコード次第です。だからあなたはこの部分を間違ってしまった。 $row['item_options']['purchased_type']
がboolean
でない限り
また、このコードは、あまりにも間違っている:
$type = $row['item_options']['purchased_type'];
if (!$type) { exit; }
ヒント:明確な小切手を作る - あなたが値を確認したい - >の値を確認してください。あなたはタイプをチェックしたいですか?タイプを正しく確認してください。あなたはそれが存在することをチェックしたいですか?何かが許容範囲か、無効なタイプのうち、すなわちであるため、あなたはそれが数学を行うことができないあなたに伝えるために、あなたのdoTheCalculations()
方法をしたい場合は最後に、私はExceptionを投げるだろうisset()
、defined()
など
を使用します。
if (!is_int($arg1)) {
throw new \RuntimeException(".....");
}
代わりに、メソッドをstatus
(boolean
)とresult
(status
がtrue
の場合)と返すようにすることもできます。必要に応じてフィールドを追加できます。または、これはさらに厄介であり、単純にクリーンではない(多くのPHP組み込み関数でもこれを行う)ことをお勧めしません。doTheCalculations()
が返され、int
が返されると仮定すると、計算できない場合はfalse
を返すことができますしかし、このアプローチでは、なぜあなたが理由を返すまでこれが起こったのか分かりません。
スクリプトを終了することはあなたのビジネスニーズを満たしていますか? –
@JohnCondeこんにちはJohn。理想的ではありません。すべてを正しく実行するためには計算を完了する必要がありますが、すべての変数が必要な場合にこれを行うにはどうすればよいかわかりません。 – ccdavies
これはオープンエンドの質問のようなものなので、私はそれを閉じるようにマークします。しかし、私はまずあなたの早急なアドバイスをしておきます。これは、私の意見では、[例外](http://php.net/manual/en/language.exceptions.php)を使う良い例です。変数が定義されていない場合は、例外をスローします。次に、ロジックの上位が上がると、これらの例外を検索(およびキャッチ)し、「XYZは必須フィールドです」などのエラーをユーザーに表示できます。 – Sam