0

同様の質問を検索しましたが、見つかりませんでした。通常の問題は、特定のクラスを別のクラスで再宣言できないことです。したがって、解決策は「require_once」または「include_once」を使用することです。しかし、私のエラーは、クラス自体の再宣言を許可していません!

説明させてください、私には 2 つのクラスがDesignありDesignSideます。これら2つのクラスを使用するPHPファイルがたくさんあります。- build_design.php、 - AJAX 呼び出しを提供する browse_designs.php - 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 の魔法の 1 つを使用して、この種の動作を防ぐことができます。

このファイルを config.php として保存します

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

これで、config.phpすべてのファイルに include/require することができます。クラス ファイルを include/require する必要はありません。

唯一の注意点は、クラス名がファイル名と一致する必要があることです。

于 2012-11-07T07:10:42.837 に答える
0

誰かが自分の回答を削除しましたが、私はちょうどそれを正しい回答としてチェックするようになりました。実際には、「DesignSide.php」が に 2 回含まれていることがわかりましたbuild_design.php。ありがとう!悪い!

したがって、正しい答えは、Design に DesignSide クラスを含め、3 つの php ファイルに Design クラスのみを含めることでした。

于 2012-11-07T06:53:01.463 に答える