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