Comment définir des fonctions globales en PHP

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

29
demandé sur Sussagittikasusa 2010-12-16 11:43:16

6 réponses

Dans inclure.php:

function myGlobalFunction() {
    // do someting
}

Ensuite, dans chaque page que vous voulez l'utiliser:

include 'include.php';
myGlobalFunction();
35
répondu Jordi 2010-12-16 08:47:17

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 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 va chercher dans votre include_path dans php.ini pour rechercher le fichier.

30
répondu user2656037 2016-01-06 10:48:49

Vous pouvez déclarer une fonction dans une fonction, veillez à appeler la fonction extérieure 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
29
répondu luarwo 2013-02-07 14:35:38

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

2
répondu Robert 2010-12-16 08:45:02

Ensuite, dans chaque page que vous voulez l'utiliser:

include 'include.php'; myGlobalFunction();

-

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

Ce techniquement peut ne pas être correct, selon le contexte.

'Page' pourrait être perçue comme 'fichier', par exemple "vous devez inclure le fichier de la fonction dans chaque fichier que vous souhaitez utiliser la fonction".

Une fois qu'une fonction est définie dans votre programme, elle est accessible de n'importe où en allant de l'avant jusqu'au le programme a fini de s'exécuter.

Dites que vous avez ceci:

Index.php :

<?php

function echo_1() {
  echo 1;
}

echo_1();

require 'boot.php';

De Démarrage.php

<?php

include_once 'page.php';

echo_1();
echo_9342949();

Page.php

<?php

function echo_9342949() {
  echo 9342949;
}

echo_1();

Avec cela, votre sortie serait 1119342949.

Bien sûr, lorsque vous dites 'page', vous pouvez littéralement signifier un fichier de page autonome directement accessible ' ', auquel cas les réponses des autres utilisateurs suffiront. Cependant, si vous cherchez à utiliser la même fonction de différents emplacements tout au long de votre programme, il suffit de définir avant que vous avez l'intention de l'utiliser et vous pouvez y accéder n'importe où aller de l'avant, quelle que soit la portée.

Modifier:

Cependant, si vous cherchez à utiliser la même fonction de différents emplacements tout au long de votre programme, il suffit de définir avant que vous avez l'intention pour l'utiliser et vous pouvez y accéder n'importe où aller de l'avant indépendamment de portée.

Pour me corriger, ce n'est bien sûr pas vrai pour des choses comme fonctions de classe, mais pour les fonctions normales cela reste vrai.

1
répondu Super Cat 2015-08-14 22:29:05

Pour développer la réponse de luarwo , Vous pouvez déclarer la fonction directement dans votre constructeur de 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";
            }
        }
    }
}

Balançoire

<?php
namespace Seesaw;
use Sandbox\MyGameLib;

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

Le jeu Tempest est génial

0
répondu jimconte 2017-05-23 12:18:23