0

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

让我解释一下,我有两个课程,Design并且DesignSide. 我有一堆 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;

怎么了?

4

2 回答 2

1

...否则您可以__autoload在脚本中使用 PHP 的一种魔法来防止这种行为。

将此文件另存为 config.php

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

现在,config.php在所有文件中包含/要求,您不需要包含/要求类文件。

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

于 2012-11-07T07:10:42.837 回答
0

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

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

于 2012-11-07T06:53:01.463 回答