如何在PHP中定义全局函数

Sus*_*usa 37 php global function

如何定义可从任何页面访问的全局函数?

Jor*_*rdi 37

在include.php中:

function myGlobalFunction() {
    // do someting
}
Run Code Online (Sandbox Code Playgroud)

然后在每个页面中使用它:

include 'include.php';
myGlobalFunction();
Run Code Online (Sandbox Code Playgroud)

  • 如果每次需要函数时都必须进行 _include_ 编辑,那么这并不能回答问题。_myGlobalFunction_ 唯一的全局性是它的名称。 (10认同)

小智 36

你可以在函数内部声明一个函数,小心只调用一次外部函数,否则你会得到一个错误.

class MyClass {

  function declareGlobalsFn () {
    // functions declared inside a function have global scope

    function globalfn1() {echo "fn1";}

    function globalfn2() {echo "fn2";}
  }
}

$ob = new MyClass();
$ob->declareGlobalsFn();

globalfn1(); // fn1
globalfn2(); // fn2
Run Code Online (Sandbox Code Playgroud)

  • 你可以使用`if(!function_exists('globalfn1')){function globalfn1(){...}}来防止重复声明. (4认同)
  • 哇,这对我来说是一种创造功能的新方式.对于PHP考试来说,这似乎是一个很好的问题.这个代码会执行与否?这是否关闭?:-)你能告诉我这是最佳做法吗?据我所知,执行包括或要求相同的功能,但后两个是更好的维护.无论如何,无论好坏,你都学到了一些东西.这就是为什么我赞成你的答案.虽然你们都没有真正回答这个问题.答案很简单:所有非类成员的函数都具有全局范围. (2认同)
  • 这对我来说也是新的。有一个很好的理由:您可以通过调用parent :: declareGlobalsFn()将声明与继承结合起来,并通过[检查是否存在]避免错误(http://php.net/manual/de/function.function- exist.php)首先。 (2认同)

小智 35

如果您希望您的功能始终可用,而不包括它,请执行以下操作:

  1. 在php文件中创建你的函数.

  2. 在你的php.ini搜索选项auto_prepend_file并将你的php文件添加到该行,如下所示:

    auto_prepend_file = "/path/to/my_superglobal_function.php"

或者,如果您使用非绝对路径编写它,如下所示:

auto_prepend_file = "my_superglobal_function.php"

它会看着你include_pathphp.ini找到该文件.

  • 这不是最好的解决方案,因为您(或其他人甚至不知道)必须修改使用您的应用程序的每个环境 (4认同)
  • 很高兴知道!在某些情况下这可能非常方便! (2认同)