3

私が次のように使用する場合function_exists

if ( ! function_exists( 'get_value' ) ) :
    function get_value( $field ) {
    ..
    return $value;
}
endif;

さて、上記の関数の前に同じファイルで関数を呼び出すと、致命的なエラーが発生します。

Fatal error: Call to undefined function get_value() ...

しかし、上記の関数の後で呼び出すと、エラーなしで値が返されます。

ここで、function_exists条件を削除すると、次のようになります。

function get_value( $field ) {
    ..
    return $value;
}

次に、同じドキュメントでこの関数を前または後に呼び出すと機能します。なんでそうなの?

4

2 に答える 2

5

ifステートメントを使用せずに関数を直接定義すると、コードの解析/コンパイル中に関数が作成され、その結果、ドキュメント全体で使用できるようになります。

if内に入れると、ifステートメントの実行時に作成されるため、定義前に使用することはできません。この時点で、ifステートメントの上に書かれたものはすべてすでに実行されています。

于 2012-07-10T09:34:37.400 に答える
0

宣言する前に関数を呼び出しているので、エラーが表示されます。次のように、IFステートメントの上で関数を実行することを宣言します。

function get_value(){
//your statements
}

そして書く

if(condition){
//your statements
}
于 2012-07-10T09:38:58.280 に答える