不能重新声明课程+课程没找到?

时间:2011-06-27 21:04:04

标签: php class include

今天我在php中遇到了一些非常奇怪的错误。

我为A / B测试写了一个小课,想在我的php文档中创建一个新实例:

if(!class_exists('ab_tester')) include('../lib/php/ab_tester.php');
$ab = new ab_tester($user['id']);

有人会认为这应该可以解决问题,但是php说:

Fatal error: Cannot redeclare class ab_tester in [PATH_TO_PHP]ab_tester.php on line 10

为什么会这样?

注意:ab_tester.php的第10行如下所示:

class ab_tester {

如果我将include行留下,创建一个新的ab_tester实例,它会吐出:

Fatal error: Class 'ab_tester' not found in [PATH_TO_PHP]returning.php on line 25

我现在该怎么办?如果我尝试导入它,它已经存在,如果我不存在,它就会丢失。

3 个答案:

答案 0 :(得分:1)

ab_tester.php中的前9行代码包含什么?

我敢打赌那里还有另一个class ab_tester(或者在一个包含中,无论如何)

编辑:

另一种可能的解释是,您稍后会在ab_tester.php的代码中再次包含returning.php。因此,即使您在此特定行中使用include_once,第二个调用仍然只是include ...

答案 1 :(得分:0)

怎么样:

include_once('../lib/php/ab_tester.php');
$ab = new ab_tester($user['id']);

答案 2 :(得分:0)

尝试使用自动加载类而不是使用includes?

function __autoload($class_name){
    $class_name = strtolower($class_name);
    $path = "../includes/{$class_name}.php";
    if(file_exists($path)){
        require_once($path);
    }else{
        die("The file {$class_name}.php could not be found.");
    }
}