今天我在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
我现在该怎么办?如果我尝试导入它,它已经存在,如果我不存在,它就会丢失。
答案 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.");
}
}