帮我理解PHP中的include / require

时间:2009-07-21 11:27:05

标签: php include

我知道includerequire之间的区别。我在项目的几个地方使用require

但事情就是这样:我希望包含ONCE文件,并能够从其他包含文件中调用它的函数。

在我的header.php文件中,我有以下代码:

<?php 
  require_once('include/dal.php');
  require_once('include/bll.php');
  require_once('include/jquery_bll.php');
?>

现在,在我的javascript中,我使用jQuery.post调用jquery_bll.php,在jquery_bll.php文件中我有以下代码:

$myDB = new DAL();

我的问题是我在(..)\ jquery_bll.php中找不到错误消息“Class'DAL'。”

我重新获得此消息,因为该文件是从javascript调用的,因此它在“范围”之外或其他内容...

那么,有没有在header.php中包含所需的文件而不必担心再次包含相同的文件?

2 个答案:

答案 0 :(得分:4)

你还需要把

  require_once('include/dal.php');
  require_once('include/bll.php');

位于jquery_bll.php之上,或在那里包含完整的标题文件。

当您的JavaScript回调到jquery_bll.php时,这是一个单独的HTTP请求,这将导致PHP仅评估该文件。由于该文件似乎不包含header.php,因此不会执行确保加载DAL类的require_once语句。

答案 1 :(得分:0)

当从客户端向jquery_bll.php发出请求时,它被称为全新页面。忘记了先前请求中的任何包含等。所以是的,正如所建议的那样,你必须在jquery_bll.php的顶部再次包含必要的'包含'。

编辑: 如果您使用的是PHP5,则可以使用其autoload功能,如果尚未定义类,您可以在include /文件夹中查看

function __autoload($class_name) {
require_once 'include/' . $class_name . '.php';

}

虽然您必须注意大写和小写,但可能会对dal与DAL等进行一些处理