1

我遇到了一个使用以下代码的 wordpress 主题:

is_file and include 'file.php';

我以前从未见过这个,所以我很困惑。它在我正在查看的特定 wordpress 主题中运行良好。但是,如果我只使用那行代码并自行运行它,它会包含该文件,但也会给我以下通知:

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:为什么这有效,我在哪里可以阅读更多关于使用“和”作为条件的信息?

问题 2:这是不好的编码习惯吗?是不是比较慢?有什么风险吗?等等。

问题 3:为什么它可以在 wordpress 主题中工作,但不能单独工作?(是的,我使用相同的 PHP 设置)。

4

4 回答 4

1

AND 指令可以被视为一个函数

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

只有一个例外。当您将表达式作为第二个参数传递时,当 $a 为 false 时,它​​甚至不会被执行。这是内置的语言优化,保证以这种方式运行。通过这种方式,您可以编写一系列表达式,仅当之前的每个表达式都为 false 时才会执行。它是非常常用的功能,不仅在 PHP 中,它不被认为是不好的做法。

同样的事情是关于 $a 或 $b:

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

遗憾的是对wordpress知之甚少。

于 2012-08-25T12:23:44.823 回答
1

在这种情况下,and意思是“如果陈述是真的,就这样做”。所以你的 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 回答
0

and一个检查左操作数,如果为假,则不需要检查右操作数。

我记得在某处读过它。让我看看能不能找到链接。

于 2012-08-25T12:18:34.743 回答