web-dev-qa-db-fra.com

Comment définir des fonctions globales dans PHP

Comment définir une fonction globale qui serait accessible depuis n'importe quelle page?

33
Sussagittikasusa

Dans include.php:

function myGlobalFunction() {
    // do someting
}

Ensuite, dans chaque page que vous souhaitez utiliser:

include 'include.php';
myGlobalFunction();
36
Jordi

Vous pouvez déclarer une fonction à l'intérieur d'une fonction, faire attention à ne pas appeler la fonction externe qu'une seule fois ou vous obtiendrez une erreur.

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
34
luarwo

Si vous souhaitez que votre fonction soit toujours disponible, sans l'inclure, procédez comme suit:

  1. Créez votre fonction dans un fichier php.

  2. Dans votre php.ini, recherchez l'option auto_prepend_file et ajoutez votre fichier php à cette ligne, comme ceci:

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

Ou si vous écrivez avec un chemin non absolu, comme ceci: 

auto_prepend_file = "my_superglobal_function.php" 

Il cherchera dans votre include_path dans php.ini pour trouver le fichier.

31
user2656037

Mettez-le dans une inclusion, puis incluez-le.

2
Robert

Pour développer la réponse de luarwo , vous pouvez déclarer la fonction directement dans le constructeur de votre classe. Cela pourrait faire de votre classe une sorte de bibliothèque de fonctions, où les fonctions sont accessibles à partir de n'importe quelle page où vous créez votre instance de classe.

Sandbox\MyGameLib

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

Seesaw

<?php
namespace Seesaw;
use Sandbox\MyGameLib;

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

Le jeu Tempest est génial

0
jimconte