Как определить глобальную функцию, доступную с любой страницы?
В include.php:
function myGlobalFunction() { // do someting }
Затем на каждой странице вы хотите его использовать:
include 'include.php'; myGlobalFunction();
Если вы хотите, чтобы ваша функция всегда была доступна, не включая ее, сделайте следующее:
Создайте свою функцию в 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
чтобы найти файл.
Вы можете объявить функцию внутри функции, будьте осторожны, чтобы вызвать внешнюю функцию только один раз, или вы получите сообщение об ошибке.
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
Поместите его в include, затем включите его.
Затем на каждой странице вы хотите его использовать:
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
.
Конечно, когда вы говорите «страница», вы можете буквально означать автономный « файл страницы » с прямым доступом, и в этом случае ответов от других пользователей будет достаточно. Однако, если вы хотите использовать одну и ту же функцию из разных мест в своей программе, просто определите ее, прежде чем намереваться использовать ее, и вы можете получить к ней доступ в любом месте, перемещаясь вперед независимо от области видимости.
Редактировать:
Однако, если вы хотите использовать одну и ту же функцию из разных мест в своей программе, просто определите ее, прежде чем намереваться использовать ее, и вы можете получить к ней доступ в любом месте, перемещаясь вперед независимо от области видимости.
Чтобы исправить себя, это, конечно, неверно для вещей, таких как функции класса , но для нормальных функций это остается верным.
Чтобы расширить ответ на luarwo , вы можете объявить функцию прямо в своем конструкторе класса. Это может сделать ваш класс своего рода библиотекой функций, где функции доступны с любой страницы, где вы создаете экземпляр класса.
Sandbox \ 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 потрясающая