我知道include
和require
之间的区别。我在项目的几个地方使用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中包含所需的文件而不必担心再次包含相同的文件?
答案 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等进行一些处理