私が作業しているページでは、最初に私のtools.php
ファイルが含まれています。 index.php
関数内で "require"を呼び出す
require("../scripts/tools.php");
次に、私はカスタムCSS
$custom_css = [
$link([
"rel" => "stylesheet",
"type" => "text/css",
"media" => "screen",
"href" => BASE . "css/layout-list.css",
]),
];
を作成し、カスタムを使用してヘッド素子を有しtools.php
内で宣言された関数を必要とする、と言います。
req("template/head.php");
私はフォルダ構造でより深く行く各パスのたびに../
Sを増やす必要があるので、私はカスタムrequire
を使用している理由があります。私は手動でそれらを追加したくありません。
ありbase()
関数はtools.php
であり、それは自動的にメインフォルダに到達するのに必要../
Sを算出し、BASE
定数に割り当てます。このBASE
定数はreq()
機能
function req($path) {
require(BASE . $path);
}
これに使用されている(一種の)動作します。問題は、(実際の)requireが関数内で呼び出されたため、は$custom_css
にアクセスできず、index.php
はhead.php
内の変数にアクセスできません。
解決策は、使用する前に変数がグローバルであることを宣言することです。
global $custom_css;
if (!isset($custom_css)) {
$custom_css = [];
}
を、私はindex.php
からhead.php
中だ変数にアクセスする必要がある場合、私は、グローバル変数を宣言する必要があります。私はhead.php
で、head.php
からindex.php
中です$custom_css
にアクセスする必要がある場合
だから、私はやります内部はhead.php
:
global $head_var;
$head_var = 4;
このプロセスは非常に疲れて冗長に見えます。 require
がどこに影響を与えるかを変更する方法はありませんか?ファイルが関数に含まれていても、インクルードされたファイルのすべての変数をグローバルにしますか?
'require(req( 'someting_here'));'のようなことはできませんか?必要なものを返すだけで、関数内で 'require()'しないでください。 – FirstOne
@FirstOne私はBeetleJuiceの答えと私のコメントを読んだとします。一般的な解決策がない場合、私はそれを使用する可能性が高いです。 – akinuri