2017-05-16 15 views
0

私のプロジェクトでは、テンプレートシステムを使用してページをまとめ、多くの変数が含まれています。通常、テンプレートは関数内からではなく、インデックスファイルから直接ロードされます。すべてのグローバル変数を関数で使用可能にする

しかし、私は単純にエラーページを表示するには、この機能を作ってるんだ瞬間に:テンプレートは、この関数の範囲外の多くの変数を使用しているため

function show_error($error){ 
    global $root; 
    global $template; 
    $content=$root."/includes/pages/error_page.html.php"; 
    include $root . $template; 
    exit(); 
} 

しかし、それだけで多くを思い付きます変数が見つかりませんでした。

関数内ですべてのグローバル変数を使用できるようにする方法はありますか?私はむしろ、個々の可能な変数を個別に宣言するのではなく、かなり退屈なので、テンプレートに変数を追加することが多いためです。

+0

テンプレートは、その範囲の外で変数にアクセスするべきではありません –

+1

PHPで基本的なテンプレートを実際に行う方法を学ぶことで恩恵を受ける可能性があります:http://chadminick.com/articles/simple-php-template-engine.html –

答えて

1

あなたは関数にすべてのグローバルをインポートするextract()を使用することができますスコープ

$foo = 'bar'; // global scope 
function test(){ 
    extract($GLOBALS, EXTR_OVERWRITE, 'g'); // import with prefix to avoid mess 
    echo $g_foo; // outputs: bar 
} 

は続きを読む:http://php.net/manual/ru/function.extract.php

0

$コンテンツと$ルートがグローバルな文脈にある場合、あなたはそれらを使用する前に、機能にこれを追加することにより、関数内でそれらにアクセスすることができます

global $content, $root; 
+0

申し訳ありませんが、私は自分の質問を編集しました。テンプレートを使用する他の多くの変数は、問題を引き起こしているため、それらをすべて宣言する必要があります。 – dlofrodloh

+0

トンと大量のグローバル変数を使用している場合は、$ GLOBALSを使用する必要があります。 – kainaw

関連する問題