0

嗨,我有一个未设置变量的问题。如果我使用的是相对路径,它可以正常工作,但是当使用绝对路径时,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 环境中的本地主机上运行并在 PHP 版本 5.3.5 中运行。

更新:

我的错是我没有包含require_layout_template. 我包含了这个函数function.php来处理需要的必要细节。

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

我已经为变量添加了必要的全局变量$user

谢谢@strkol 的想法。

4

1 回答 1

0

The best way in general is to define the root directory on the site that is directly called by the user. So all index sites, that are supposed to by directly addressed by the user, but not in other .php files, that are included or classes and so on.

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

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