Как определить глобальную функцию, которая будет доступна с любой страницы?
Как определить глобальные функции в PHP
Ответ 1
В include.php:
function myGlobalFunction() {
// do someting
}
Затем на каждой странице вы хотите его использовать:
include 'include.php';
myGlobalFunction();
Ответ 2
Если вы хотите, чтобы ваша функция всегда была доступна, не включая ее, сделайте следующее:
-
Создайте свою функцию в файле php.
-
В вашем php.ini найдите параметр
auto_prepend_file
и добавьте ваш php файл в эту строку, например:auto_prepend_file = "/path/to/my_superglobal_function.php"
Или, если вы пишете его с не абсолютным путем, например:
auto_prepend_file = "my_superglobal_function.php"
Он будет выглядеть в вашем include_path
в php.ini
, чтобы найти файл.
Ответ 3
Вы можете объявить функцию внутри функции, будьте осторожны, чтобы вызвать внешнюю функцию только один раз, или вы получите сообщение об ошибке.
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
Ответ 4
Поместите его в include, затем включите его.
Ответ 5
Затем на каждой странице вы хотите его использовать:
include 'include.php'; myGlobalFunction();
-
Поместите его в include, затем включите его.
Это технически может быть неправильным, в зависимости от контекста.
"Страница" может восприниматься как "файл", например "Вы должны включить файл функции в каждый файл, который хотите использовать функцию".
Как только функция определена в вашей программе, к ней можно получить доступ из любого места, перемещая вперед, пока программа не закончит выполнение.
Скажите, что у вас есть это:
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();
При этом ваш результат будет 1119342949
.
Конечно, когда вы говорите "страница", вы можете буквально означать автономный "файл страницы" с прямым доступом, и в этом случае ответов от других пользователей будет достаточно. Однако, если вы хотите использовать одну и ту же функцию из разных мест в своей программе, просто определите ее, прежде чем намереваться использовать ее, и вы сможете получить доступ к ней в любом месте, перемещаясь вперед, независимо от области действия.
Edit:
Однако, если вы хотите использовать одну и ту же функцию из разных местоположения во всей вашей программе, просто определите это, прежде чем будете намереваться использовать его, и вы можете получить к нему доступ в любом месте, независимо от того, сфера.
Чтобы исправить себя, это, конечно, неверно для таких вещей, как функции класса, но для нормальных функций это остается верным.
Ответ 6
Чтобы расширить luarwo answer, вы можете объявить функцию прямо в своем конструкторе класса. Это может сделать ваш класс своего рода библиотекой функций, где функции доступны с любой страницы, где вы создаете экземпляр класса.
Песочница \MyGameLib
<?php
namespace Sandbox;
class MyGameLib {
public function __construct() {
if (!function_exists('loveGame')) {
function loveGame($game) {
print "The game $game is awesome";
}
}
}
}
Качели
<?php
namespace Seesaw;
use Sandbox\MyGameLib;
$m = new MyGameLib();
loveGame('Tempest');
Игра Tempest удивительна