Comment puis-je définir une fonction globale qui serait accessible à partir de n'importe quelle page ?
Réponses
Trop de publicités?Si vous voulez que votre fonction soit toujours disponible, sans l'inclure, faites ceci :
-
Créez votre fonction dans un fichier PHP.
-
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
enphp.ini
pour trouver le fichier.
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
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.
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
- Réponses précédentes
- Plus de réponses