2012-11-07 57 views
0

我已经搜索了类似的问题,但没有找到任何。通常的问题是某个类不能在另一个类中重新声明,因此解决方案是使用“require_once”或“include_once”。但是我的错误是不允许类重新声明!无法在classX.php中重新声明classX?

让我解释一下,我有两个类,DesignDesignSide。 我有一堆PHP文件,我使用这两个类。 - build_design.php, - browse_designs.php,这给出了一个AJAX调用 - load_designs.php

每一个设计可以有几个面来,所以所有的3档以上包括线:

require_once("Design.php"); 

Design.php有一行:

require_once("DesignSide.php"); 

但在build_design.php,我的错误是:

Fatal error: Cannot redeclare class DesignSide in ../classes/DesignSide.php on line 4 

即它反对DesignSide声明自己!这些是DesignSide的开始行:

<?php 

class DesignSide 
{ 
private $id; 
private $data; 
private $designtag; 
private $side; 

怎么了?

+0

'Design.php'是否在某处调用'DesignSide'? –

+0

在require_once函数中缺少文件名引用 – Hkachhia

+0

我其实在我的代码中有引号 - 只是编辑了包含它们的问题。 – user961627

回答

1

......否则你可以在你的脚本中使用PHP的一个魔术​​来防止这种行为。

保存此文件的config.php现在

function __autoload($class) { 
    if(file_exists($class . '.php')) { 
     require_once $class . '.php'; 
    } else { 
     die('No such file.'); 
    } 
} 

,包括/需要在所有文件config.php,你并不需要包括/需要的类文件。

唯一需要注意的是类名必须与文件名匹配。

0

有人刚刚删除了他们的答案 - 但我只是来打勾它作为正确的答案。 原来,事实上,我确实有“DesignSide.php”包含两次,在build_design.php。 谢谢!我的错!

所以正确的答案是在Design中包含DesignSide类,并且只在三个php文件中包含Design类。