我有一个脚本,它有以下结构:
<?php
if( a == b ){
function some_function_name(){
// do something here
}
if( c == d ){
some_function_name();
}
}
?>
我得到一个错误消息说some_function_name();不存在
我做错了什么,这是好的做法吗?
我想创建一个函数,因为我有一堆需要多次使用的步骤,我不希望一遍又一遍地复制/粘贴相同的代码。
不能在if语句中声明函数
你可以这样做:
<?php
function some_function_name() {
// do something here
}
if( a == b && c == d ) {
some_function_name();
}
?>
我会避免在条件if()
语句中定义函数。首先在文件的顶部定义函数,并在必要时调用它。
如果你想把一堆步骤放入函数中,你必须在If语句之外定义函数,最好是在文件的开头或结尾,或者在单独的文件
如果这个函数是你的工作流的一个合法的部分,将在多个地方使用,使它成为一个顶级函数(或者一个类方法,如果适用的话)。
在(相对不常见的)情况下,您希望创建一个函数作为回调传递,并且该函数的行为主要由变量的值决定,您可以定义一个匿名函数:
$func = function() {
// do something here
}
if(c == d){
// you can call it like this, but read the above paragraph
$func();
}
匿名函数要求PHP>= 5.3;如果您使用的是较早的版本,那么您可以使用create_function
实现相同的结果,但是它太麻烦了,因此很少值得麻烦。
这不是一个好的做法,事实上,没有理由不在if块之外定义函数。这种方法很容易出错。
你得到错误,因为some_function_name()
绑定到第一个if块的范围。
你不应该复制/粘贴!这就是函数的作用。创建您的函数并尽可能多地重用它们。我想创建一个函数,因为我有一堆需要多次使用的步骤,我不想一遍又一遍地复制/粘贴相同的代码。