3

変数を埋めるとき、次のようなことができますか?:

$type = isset( $_GET['type'] ) ?  $_GET['type'] : die();

そうすることで、「タイプ」がリクエストにない場合、私の関数は終了します。これは die() を使用する正しい方法ですか?

4

5 に答える 5

3

関数を終了させたい場合は、 を使用しますreturnifただし、これは式ではないため、ステートメントに変更する必要があります。

if(!isset($_GET['type'])) {
    return;
}

$type = $_GET['type'];

ページ全体の実行を停止したい場合は、そのとおりです (ただしif、明確にするために引き続き を使用します)。

于 2012-07-15T02:26:38.610 に答える
1

はいといいえ。はい、あなたがしていることは技術的に正しく、変数が存在しない場合はスクリプトを終了しますが、コードをテストしたい場合はdie構成を使用しないでください。PHP はオブジェクト指向言語 (バージョン 5 以降) であり、非常に強力な言語です。ここで使用する高度なエラー処理の例外の使用がサポートされています。

于 2012-07-15T02:27:29.043 に答える
1

die()を使用して変数を埋めることはできません。die()コードを終了します。代わりに、以下のコードを検討してください。

$type = isset( $_GET['type'] ) ? $_GET['type'] : null;

于 2012-07-15T02:27:45.377 に答える
1

Ternary Operator Docsには、次のように書かれています。

$type = isset( $_GET['type'] ) ?  $_GET['type'] : die();

次の if/else ステートメントと同じです。

if ( isset( $_GET['type'] ) )
    $type = $_GET['type'];
else 
    $type = die();

が呼び出され、スクリプトの実行を停止するため機能die()しますが、良い習慣ではありません。これを踏まえて、if/else ステートメントを使用し、die()以下のように $_GET['type'] が存在しない場合は単純に呼び出す方がよいと思います。

if ( isset( $_GET['type'] ) )
    $type = $_GET['type'];
else 
    die('type not found');
于 2012-07-15T02:52:26.640 に答える
0

die()関数は、現在の関数を終了するだけでなく、PHP プロセス全体を終了します。それ以上に、コードは PHP が一種の間抜けであるという事実に依存しています。die()は厳密には void 関数であると想定されていますが、呼び出しは何かを返すことに依存しています。これは行いますが、すべきではありません。

本当に必要なのは、簡単なifステートメントです。

if( ! isset($_GET['type']) )
    return;

$type = $_GET['type'];

もう 1 つは、このコードが関数内にある場合、グローバルとして宣言されていない限り、$type の値は保持されないことです。

于 2012-07-15T02:35:32.977 に答える