Comment définir des fonctions globales en PHP
Comment définir une fonction globale qui serait accessible depuis n'importe quelle page?
6 réponses
Dans inclure.php:
function myGlobalFunction() {
// do someting
}
Ensuite, dans chaque page que vous voulez l'utiliser:
include 'include.php';
myGlobalFunction();
Si vous voulez que votre fonction soit toujours disponible, sans l'inclure, faites ceci:
Créez votre fonction dans un fichier php.
-
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.
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
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.
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