Подтвердить что ты не робот

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

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

4b9b3361

Ответ 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 удивительна