PHP自定义功能范围/良好实践

时间:2011-09-14 14:05:27

标签: php

我的脚本具有以下结构:

<?php
    if( a == b ){

        function some_function_name(){
            // do something here
        }

        if( c == d ){
            some_function_name();
        }
    }
?>

我收到一条错误消息,提到some_function_name();不存在。

我做错了什么,这是一种好的做法吗?

我想创建一个函数,因为我需要多次使用一些步骤,而且我不想一遍又一遍地复制/粘贴相同的代码。

5 个答案:

答案 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块的范围。

  

我想创建一个函数,因为我需要多次使用一些步骤,而且我不想一遍又一遍地复制/粘贴相同的代码。

你不应该复制/粘贴!这就是功能的用途。创建您的功能并根据需要重复使用它们。