Как определить глобальные функции в PHP

Как определить глобальную функцию, доступную с любой страницы?

В include.php:

function myGlobalFunction() { // do someting } 

Затем на каждой странице вы хотите его использовать:

 include 'include.php'; myGlobalFunction(); 

Если вы хотите, чтобы ваша функция всегда была доступна, не включая ее, сделайте следующее:

  1. Создайте свою функцию в php-файле.

  2. В вашем 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 потрясающая