我可以在我的头中包含session_functions.php,然后从body.php调用一个函数吗


Can i include my session_functions.php in my header then call a function from body.php

我的header.php是这样的。

include("sessions.php");
<h1>...

我的sessions.php页面看起来像这个

session_start();
function validate_user()
{
    //validate user
}

我体内有一个user_class.php。我可以只调用validate_user(),因为我已经将它包含在页面中了吗?还是必须将它包括在我的userclass.php和每个使用会话函数的php中?

简短回答,是。你的要求本质上是包含的全部目的。使用includes,您可以将代码划分为表示功能单元的块(文件),例如会话处理。正如其他一些海报所建议的那样,其中一块可能是初始化代码。

想象一下,includes只是将文件内联到include/request语句的点中,并替换它。在这个模型中,只要函数出现在你使用它的点之上,你就可以继续了。

归根结底,你更喜欢如何划分代码,但像"四人帮"中的经典"设计模式"这样的书可以帮助你就如何设计代码做出正确的决定,以最大限度地方便维护和重用。

如果您的user_class.php依赖于已包含的sessions.php,您可能需要在user_class.php的顶部放置一个require_once "sessions.php";。此外,我建议使用include_once,而不仅仅是include

我会避免混合过程代码和函数定义。

相反,将过程代码(即session_start())移动到一个单独的文件中,例如bootstrap.php,并将其包含在页面顶部。

要确保包含在其他文件中定义的函数和类,请使用require_once。这样,您就可以安全地包含所需的文件,而不会遇到重新定义错误。

还有一件事,在将任何内容发送到浏览器之前,都应该调用session_start()。为了安全起见,请将它放在脚本的顶部。

例如

引导程序.php

<?php
// for development only
ini_set('display_errors', 'On');
error_reporting(E_ALL);
session_start();
require_once 'functions.php';

functions.php

<?php
function validate_user()
{
    //validate user
}

header.php

<h1>...

user_class.php

<?php
require_once 'functions.php';
class User { ...

some_page.php

<?php
require_once 'bootstrap.php';
?>
<!DOCTYPE html>
<html>
    <head>...</head>
    <body>
        <?php include 'header.php' ?>
    </body>
</html>