どのページからでもアクセスできるグローバル関数を定義する方法は?
Include.phpで:
function myGlobalFunction() {
// do someting
}
次に、使用したいすべてのページで:
include 'include.php';
myGlobalFunction();
関数内で関数を宣言することも、外部関数を1回だけ呼び出すように注意することもできます。そうしないと、エラーが発生します。
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
関数を含めることなく常に使用可能にする場合は、次の操作を行います。
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
を見て、ファイルを見つけます。
次に、使用するすべてのページで:
include 'include.php'; myGlobalFunction();
-
インクルードに入れてから、インクルードします。
この技術的には、コンテキストによっては正しくない場合があります。
「ページ」は「ファイル」として認識できます。たとえば、「関数を使用する各ファイル内に関数のファイルを含める必要があります」。
プログラムで関数が定義されると、プログラムの実行が完了するまで、どこからでもアクセスできます。
これがあるとしましょう:
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's answer を展開するには、クラスコンストラクターで関数を宣言できます。これにより、クラスは一種の関数ライブラリになり、クラスインスタンスを作成する任意のページから関数にアクセスできます。
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');
ゲームテンペストは素晴らしい