1

1ページに2つのインクルードがあります。それらがヘッダーとフッターであるとしましょう:

<?php
include('header.php');
include('footer.php');

ヘッダーのフッターから変数を使用する必要があります。これは可能ですか?

4

2 に答える 2

3

別のインクルードを作成するか、変数のロジックをメインスクリプトに配置します。

于 2012-05-28T08:27:49.730 に答える
1

できない理由がない限り、簡単な解決策は、代わりにinc2で使用される変数をinc1に設定することです。

スクリプトが関数の外部に含まれている場合、スクリプトはグローバルスコープで実行されるため、スコープが設定または定義されているものはすべてグローバルスコープになります。スクリプトがローカルスコープ(関数など)に含まれている場合、スクリプトは同じスコープで実行されるため、スクリプトが定義するものはすべてローカルです。含まれているスクリプトは、関数のローカル変数にアクセスできることに注意してください。

function foo($x) {
    $bar = 'bam';
    include 'script.php'; # script.php can access $x and $bar
}

ただし、グローバル変数には問題がある可能性があります。より良いアプローチは、タスクを別々のモジュールに分割することです。ほとんどのモジュールはライブラリスクリプトです。モジュールは物事(関数、クラス)を定義するだけで、直接何も実行しません。エントリポイント(トップレベルのスクリプト)は何も定義しません。代わりに、すべてを接続し、計算の開始点として機能します。データベース接続の簡単な例を次に示します。

<?php
include_once('DB.php');
include_once('header.php');
include_once('footer.php');

$db = DB::connect();
header($db);
footer($db);

技術的$dbにはグローバル変数ですが(これは本番コードではなく単なるサンプルコードであることに注意してください)、このスクリプト以外の場所からアクセスすることはできません。代わりに、機能のルールに従って渡されます(これはセキュリティ目的で設計されていますが、ルールは実際には単なる優れたOOP原則です)。

于 2012-05-28T08:37:12.277 に答える