我的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>