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

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

6 ответов


В включить.на 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, затем включите его.

этой технически может быть неправильно, в зависимости от контекста.

" страница "может восприниматься как"файл", например "вы должны включить файл функции в каждый файл, который вы хотите использовать функцию".

как только функция определена в вашей программе, к нему можно получить доступ из любого места, двигаясь вперед, пока программа не завершит выполнение.

скажите, что у вас есть это:

.в PHP:

<?php

function echo_1() {
  echo 1;
}

echo_1();

require 'boot.php';

boot.в PHP

<?php

include_once 'page.php';

echo_1();
echo_9342949();


расширить на luarwo это, вы можете объявить функцию в конструкторе класса. Это может сделать ваш класс вроде библиотеки функций, где функции доступны с любой страницы, где вы создаете экземпляр класса.

Песочница\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 является удивительным