1

次のコードを使用するワードプレスのテーマに出くわしました。

is_file and include 'file.php';

これは今まで見たことがなかったので、かなり混乱しました。私が見ている特定のワードプレスのテーマでは問題なく動作します。しかし、そのコード行を単独で実行すると、ファイルが含まれますが、次の通知も表示されます。

Notice: Use of undefined constant is_file - assumed 'is_file' in (the file path) on line 3

しかし、私がこれを行うと:

is_file('file.php') and include 'file.php';

それは正常に動作します。

質問 1: なぜこれが機能するのですか? また、「and」を条件として使用する方法については、どこで詳しく読むことができますか?

質問 2: 悪いコーディング方法ですか? 遅いですか?リスクはありますか?等。

質問 3: wordpress テーマでは機能するのに、単独では機能しないのはなぜですか? (はい、同じ PHP 設定を使用します)。

4

4 に答える 4

1

その場合、andは「ステートメントが true の場合、これを行う」という意味です。したがって、Wordpress のコードは正しくありません。

is_file and include 'file.php'

定数は大文字にする必要があるためです。この場合、定数を意味していても意味がありません。

is_file('my_file') and include 'my_file.php'

が正しい方法です。

同じように、次のように使用できますor

$payed or my_redirect_function('pay.php'); //go to payment page
于 2012-08-25T12:19:57.210 に答える
1
is_file('file.php') and include 'file.php'; 

is_file('file.php')戻るので機能しますTRUE

is_file and include 'file.php'; 

is_file何も返さないため、機能しませんでした。

于 2012-08-25T12:20:27.093 に答える
1

AND ディレクティブは関数のように扱うことができます

function and($a, $b)
{
    if($a) return $b;
    else return $a;
}

唯一の例外を除いて。式を 2 番目のパラメーターとして渡すと、$a が false の場合は実行されません。これは組み込みの言語最適化であり、このように動作することが保証されています。このようにして、前のすべてが false の場合にのみ実行される一連の式を作成できます。これは、PHP だけでなく、非常に頻繁に使用される機能であり、悪い習慣とは見なされません。

同じことが $a または $b についてです。

function or($a, $b)
{
    if($a) return $a;
    else return $b;
}

残念ながらワードプレスについてはよくわかりません。

于 2012-08-25T12:23:44.823 に答える
0

最初andは左側のオペランドをチェックし、false の場合は右側のオペランドをチェックする必要はありません。

どこかで読んだ記憶があります。リンクを見つけることができるかどうか見てみましょう。

于 2012-08-25T12:18:34.743 に答える