如何在其他包含的文件中包含使用类的文件?

时间:2014-12-11 19:53:04

标签: php

我在根文件夹中有3个文件

main.php:

require_once 'function.php';
load_layout($template="header"); // load header.php -- there are echo $session->user_id; code in header.php that not work
echo $session->user_id; //work

function.php:

require_once 'ses.php';
function load_layout($template="") {
    include ('header.php');
}

ses.php:

class Session {
    public $user_id = "1";
    public function userinfoss() {
        return $this->user_id;
    }
}

$session = new Session();

和header.php

require_once 'function.php';
echo $session->user_id; //not work in main.php loading but work if header.php run seprate
如果echo $session->user_id;分开运行,则{p> header.php工作但main.php中包含echo $session->user_id;main.php无效{/ 1}}

如何更改我的代码以在包含的文件中显示echo $session->user_id;

更新

我在ses.php中创建了一个函数:

    class Session {
        public $user_id = "1";
        public function userinfoss() {
            return $this->user_id;
        }
    }

    $session = new Session();

    function testfun() {
    global $session;
    echo $session->user_id;
}

所以在header.php中调用此函数并运行 但为什么$session->user_id不起作用?

1 个答案:

答案 0 :(得分:1)

当您致电main.php时,第一个require_once 'function.php';将有效,并会调用require_once 'ses.php';,这将使$session变量在function.php中可用,在main.php;

但是,当header.php被包含在内时,其中包含的require_once 'function.php';将不会执行任何操作(因为已包含function.php),并且$session变量不会可在header.php中找到。


理想情况下,您应该重新组织代码,这样您就不会有2个依赖于同一文件(main.php)的文件(header.phpfunction.php)。

所以,也许你可以替换:

require_once 'function.php'
load_layout($template="header");

main.php中:

require_once 'header.php';

如果无法重新组织代码,则可以使用$session的全局变量。添加:

global $session;

$session = new Session();
ses.php中的

您还需要添加

global $session;

echo $session->user_id;
header.php

中的