38 votes

Comment définir des fonctions globales en PHP

Comment puis-je définir une fonction globale qui serait accessible à partir de n'importe quelle page ?

40voto

user2656037 Points 411

Si vous voulez que votre fonction soit toujours disponible, sans l'inclure, faites ceci :

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

  2. Dans votre fichier 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 l'écrivez avec un chemin non absolu, comme ceci :

    auto_prepend_file = "my_superglobal_function.php"

    Il apparaîtra dans votre include_path en php.ini pour trouver le fichier.

39voto

Jordi Points 2120

Dans le dossier include.php :

function myGlobalFunction() {
    // Do something
}

Ensuite, dans chaque page que vous souhaitez utiliser :

include 'include.php';
myGlobalFunction();

39voto

luarwo Points 488

Vous pouvez déclarer une fonction à l'intérieur d'une fonction. Veillez à n'appeler la fonction extérieure qu'une seule fois, sinon 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

2voto

Super Cat Points 1303

Ensuite, dans chaque page que vous souhaitez utiliser :

include 'include.php'; myGlobalFunction();

-

Mettez-le dans un include, puis incluez-le.

Le présent techniquement peut ne pas être correct, selon le contexte.

Le terme "page" pourrait être perçu comme "fichier". Par exemple, "Vous devez inclure le fichier de la fonction dans chaque fichier dans lequel vous voulez utiliser la fonction".

Une fois qu'une fonction est définie dans votre programme, elle est accessible depuis n'importe quel endroit jusqu'à ce que le programme ait fini de s'exécuter.

Disons que vous avez ceci :

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();

Avec cela, vous obtiendrez le résultat suivant 1119342949 .

Bien entendu, lorsque vous dites "page", vous pouvez littéralement parler d'une "page" autonome à laquelle on accède directement. fichier de page Dans ce cas, les réponses des autres utilisateurs suffiront. Toutefois, si vous souhaitez utiliser la même fonction à différents endroits de votre programme, il vous suffit de la définir avant de l'utiliser et vous pourrez y accéder n'importe où, quel que soit le champ d'application.

Cependant, si vous souhaitez utiliser la même fonction dans différents différents endroits de votre programme, il vous suffit de la définir avant de l'utiliser et vous pourrez y accéder n'importe où, quel que soit l'endroit où vous vous trouvez. l'utiliser et vous pourrez y accéder n'importe où à l'avenir, quelle que soit la l'étendue.

Ce n'est évidemment pas le cas pour des choses telles que fonctions de la classe mais pour les fonctions normales, cela reste vrai.

2voto

jimconte Points 99

Pour en savoir plus Réponse de luarwo vous pouvez déclarer la fonction directement dans le constructeur de votre classe. Cela peut 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.

Bac à sable \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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X