如何在PHP中定义全局函数

时间:2010-12-16 08:43:17

标签: php function global

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

6 个答案:

答案 0 :(得分:37)

在include.php中:

function myGlobalFunction() {
    // do someting
}

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

include 'include.php';
myGlobalFunction();

答案 1 :(得分:34)

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

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

答案 2 :(得分:31)

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

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

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

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

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

    auto_prepend_file = "my_superglobal_function.php"

    它会在include_path php.ini中找到该文件。

答案 3 :(得分:2)

将它放入包含中,然后包含它。

答案 4 :(得分:1)

  

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

     

include 'include.php'; myGlobalFunction();

-

  

将它放入包含中,然后包含它。

技术上可能不正确,具体取决于具体情况。

'Page'可以被视为'文件',例如“您必须在要使用该功能的每个文件中包含该函数的文件”。

一旦在程序中定义了一个函数,就可以从前进的任何地方访问它,直到程序执行完毕。

说你有这个:

<强>的index.php

<?php

function echo_1() {
  echo 1;
}

echo_1();

require 'boot.php';

<强> boot.php

<?php

include_once 'page.php';

echo_1();
echo_9342949();

<强> page.php文件

<?php

function echo_9342949() {
  echo 9342949;
}

echo_1();

这样,您的输出将为1119342949

当然,当您说“页面”时,您可能只是指直接访问的独立“页面文件”,在这种情况下,来自其他用户的答案就足够了。但是,如果您希望在整个程序中使用来自不同位置的相同功能,只需在打算使用它之前定义它,并且无论范围如何都可以在任何地方进行访问。

编辑:

  

但是,如果您希望使用不同的相同功能   整个程序中的位置,只需在您打算之前定义它   使用它,你可以随时随地访问它,无论如何   范围。

为了纠正自己,这当然不适用于类函数之类的东西,但对于普通函数,这仍然是正确的。

答案 5 :(得分:0)

要展开luarwo's answer,您可以在类构造函数中声明该函数。这可以使您的类成为一种函数库,可以从创建类实例的任何页面访问这些函数。

<强>沙箱\ MyGameLib

<?php
namespace Sandbox;
class MyGameLib {
    public function __construct() {
        if (!function_exists('loveGame')) {
            function loveGame($game) {
                print "The game $game is awesome";
            }
        }
    }
}

<强>跷跷板

<?php
namespace Seesaw;
use Sandbox\MyGameLib;

$m = new MyGameLib();
loveGame('Tempest');
  

暴风雨游戏很棒