在此if语句中是否会执行副作用if
函数add_new_user
是否在if语句内部运行SQL INSERT查询?在此if语句中是否会执行副作用if
我具备的功能
function add_new_user ($username, $email, $passhash_md5)
{
-- cut: database INSERT queries
return 1;
}
我用上面
if (validate($username, $password, $email) == 1) {
if (add_new_user ($username, $email, $passhash_md5) == 1) {
// problem here
-- cut
}
}
我问这个问题,因为我不知道为什么this handler总是给人不成功registraton通知的代码。这两个代码属于处理程序。该错误似乎在我的代码的语法中,也许在使用if/else。
是否功能add_new_user运行 SQL INSERT查询,如果它是 如果-clause里面?
是
function foo() {
echo 'A';
return true;
}
function bar() {
echo 'B';
return false;
}
if (foo()) {
if (bar()) {
echo 'C';
}
}
// Output: AB
是
功能首先得到的评价为它的返回值。返回值是已知的
后,返回值是相对于整数值1.
是。运行if (
和) {
之间的任何内容以查看它是否为真。你真的可以在这里做任何事情。
PHP必须评估布尔表达式才能知道它是否会执行该块。因此,要评估“==”运算符,它需要评估双方,包括函数“add_new_user”。
因此,答案是:是,它将评估功能add_new_user和它将执行插入操作(除非你有内部add_new_user这将阻止这样的代码)。
但是,您正在做一些应尽可能避免的事情:您正在使用具有副作用的情况!这会让你头疼(例如,现在!)。
你能否澄清一下你的意思是副作用?但是,您的答案表明我不需要检查功能是否已被访问。 **我仍然想看看查询是否成功。** – 2009-08-23 20:37:06
副作用是类似于:写入磁盘/流/数据库,打开连接等。您应该知道哪个函数有副作用(add_new_user有一个,例如)。然后,你必须知道,当你调用这些函数时,会产生副作用。你原来的问题可以改写为:“这个'if'陈述会带来副作用吗?”。当然,你必须检查它是否成功,你的做法并不坏。请记住我对副作用所说的话。谷歌为“纯功能”或“副作用免费功能”的更多信息! – 2009-08-23 20:46:53
谢谢你的回答! – 2009-08-23 20:45:43