0

こんにちは、変数が設定されていないという問題があります。RELATIVE パスを使用している場合は正常に動作しますが、絶対パスを使用している場合、php は設定されていないと言います。

<?php
define('DS', DIRECTORY_SEPARATOR);
define('SITE_ROOT', 'G:' . DS . 'htdocs' . DS . 'www');
define('LAYOUT_PATH', SITE_ROOT . DS . 'layout');
require('function.php');    

$user = new User();
$user->set_username('johndoe');

require_layout_template('header.php');
?>

私の中でheader.php

<?php
//if ( isset($user) ) {
    echo $user->get_username();
//}
?>

上記の結果は次のエラーです。 Notice: Undefined variable: user in G:\htdocs\www\layout\header.php

ただし、相対パスを使用すると、すべて問題ありません。

Windows 環境の localhost で実行しており、PHP バージョン 5.3.5 で実行しています。

アップデート:

を入れなかったのは私のせいですrequire_layout_template。この関数はfunction.php、require に必要な詳細を処理するために含まれています。

<?php
    //function.php
    function require_layout_template($template) {
        global $user; // added this to solve the problem.
        require(LAYOUT_PATH . DS . $template);
    }
?>

variable に必要なグローバル変数を追加しました$user

アイデアをくれた@strkolに感謝します。

4

1 に答える 1

0

一般に、ユーザーが直接呼び出すルート ディレクトリをサイトに定義するのが最善の方法です。したがって、すべてのインデックス サイトは、ユーザーによって直接アドレス指定されることになっていますが、含まれている他の .php ファイルやクラスなどには含まれていません。

index.php:
$rootdir = '../';

require_once($rootdir.'dir/other.php);
于 2012-04-06T11:39:05.593 に答える