0

私はファイルを持っています。ファイルの最初に「include.php」のインクルードがあるindex.phpだとしましょう。include.php で、次のような変数を設定します。

<?php $variable = "the value"; ?>

次に、index.php のさらに下に別のインクルードがあります。たとえば、「include2.php」は次のようにインクルードされます。

<?php include(get_template_directory_uri() . '/include2.php'); ?>

「include2.php」の最初のインクルードで設定した「$変数」を呼び出すにはどうすればよいですか?

私が使用している正確なコードは次のとおりです。

index.php の最初の行にこの行があります

<?php include('switcher.php'); ?>

switcher.php の中にはこれがあります

<?php $GLOBALS["demo_color"] = "#fffffe"; ?>

これをindex.phpで使用すると、機能します

<?php echo $GLOBALS["demo_color"]; ?>

ただし、次のコードを使用して別のphpファイルを含めると

<?php include(get_template_directory_uri() . '/demo_color.php'); ?>

次に、demo_color.php 内に次のコードがあります。

<?php echo "demo color:" . $GLOBALS["demo_color"]; ?>

出力されるのは「demo color:」だけです。

コードフォーマット用に編集

4

2 に答える 2

3

include.php のインクルードが別のスコープ内 (つまり、関数呼び出し内) で行われない限り、単にinclude2.php で使用できます。ここを参照してください

アプリ全体で変数を使用する意図を完全に明示したい場合は、その名前の $GLOBALS["variable"] バージョンを使用します。これは、常にvariableグローバル スコープで呼び出される変数を指します。

編集:これを再構築するためにphp 5.3.10に対してテストを実施しました:

// index.php
<?php
include("define.php");
include("use.php");

// define.php
$foo = "bar";

// use.php
var_dump($foo);

これは期待どおりに機能し、string(3) "bar" を出力します。

于 2012-06-24T07:07:07.980 に答える
1
<?PHP
//index.php
$txt='hello world';
include('include.php');

<?PHP
//include.php
echo $txt; //will output hello world

だからそれはうまくいく。これは将来維持するのが難しい可能性が高いため、より大きな問題があるようですが. 変数をグローバル名前空間に入れて別のファイルで使用することは、ベスト プラクティスではありません。

コードをより保守しやすくするために、クラスを使用して、明示的に必要な変数を単に使用する代わりにアタッチできるようにすることをお勧めします。コードが表示されていないため、さらに正確に何が必要かは明確ではありませんが、コードをクラス、関数などに配置できる可能性があります。テンプレートの場合は、送信する明示的な set() 関数について考えることができます変数データをテンプレートに渡し、そこで extract() します。

編集:

さらに、情報に基づいて、最初に error_reporting を E_ALL に設定し、display_errors を 1 に設定します。更新された質問に配置した情報は、不足している変数が定数として使用されていることを示しているため、すべてのエラーが発生し、全体的にエラーが発生するはずです。場所。

于 2012-06-24T07:25:25.033 に答える