我遇到了一个使用以下代码的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设置)。
答案 0 :(得分:1)
在这种情况下,and
表示“如果陈述为真,则执行此操作”。因此,Wordpress中的代码是无用的:
is_file and include 'file.php'
因为常量应该是大写的。即使它们在这种情况下意味着一个常数,也没有意义。
is_file('my_file') and include 'my_file.php'
是正确的方法。
同样,您可以使用or
:“如果语句为false,请执行此操作”,如
$payed or my_redirect_function('pay.php'); //go to payment page
答案 1 :(得分:1)
is_file('file.php') and include 'file.php';
它有效,因为is_file('file.php')
返回TRUE
is_file and include 'file.php';
它不起作用,因为is_file
没有返回任何内容。
答案 2 :(得分: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不太了解。
答案 3 :(得分:0)
and
首先检查左操作数,如果为false,则不需要检查右操作数。
我记得在某处读过它。让我看看能否找到链接。