167

誰かがこの問題を引き起こす可能性があることを知っていますか?

PHPの致命的なエラー:クラスを再宣言できません

4

19 に答える 19

318

同じ名前のクラスが複数回宣言されています。多分複数のインクルードを介して。他のファイルを含めるときは、次のようなものを使用する必要があります

include_once "something.php";

多重混入を防ぎます。これは非常に簡単に発生しますが、常に明らかであるとは限りません。ファイルの長いチェーンが相互に含まれている可能性があるためです。

于 2009-04-02T03:15:45.673 に答える
119

これは、クラスをすでに作成していることを意味します。

例えば:

class Foo {}

// some code here

class Foo {}

その2番目のFooはエラーをスローします。

于 2009-04-02T03:15:02.867 に答える
57

これは、1つのページでクラスを複数回宣言した場合に発生します。そのクラスをifステートメント(以下のように)でラップするか、別のファイルに入れてrequire_once()、の代わりにを使用することで修正できますinclude()

if (!class_exists('TestClass')) {
   // Put class TestClass here
}
于 2009-04-02T03:46:28.813 に答える
20

使用include_once();- これにより、コードは 1 回だけ含まれます。

于 2011-07-15T08:21:41.620 に答える
15

これは、php ライブラリに組み込まれているクラスのいずれかを使用すると発生します。クラス名を Directory として使用しましたが、同じエラーが発生しました。最初にエラーが発生した場合は、使用するクラス名が組み込みクラスのいずれでもないことを確認してください。

于 2010-01-30T10:44:43.777 に答える
12

__constructこのエラーは、メソッドを複数回定義した場合にも発生することがあります。

于 2012-07-08T13:32:55.897 に答える
8

これは、PHP の FastCGI のバグが原因で発生することがあります。

再起動してみてください。Ubuntuでは次のとおりです。

service php-fastcgi restart
于 2011-07-04T00:37:51.023 に答える
3

追加するだけです。

このエラーは、誤って関数を別の関数の中に入れた場合にも発生する可能性があります。

于 2011-11-23T12:11:49.700 に答える
3

PHP 5.3 (古いバージョンもあると思います) では、同じ名前を別のケースで使用すると問題が発生するようです。したがって、クラス Login とそれが LogIn を実装するインターフェイスがあるときに、この問題が発生しました。LogIn を Log_In に名前を変更した後、問題は解決しました。

于 2012-04-20T23:52:04.993 に答える
1

Zend Framework を使用しましたか? 私も同じ問題を抱えています。
の次の行をコメントアウトして解決しましたconfig/application.ini

;includePaths.library = APPLICATION_PATH "/../library"

これがお役に立てば幸いです。

于 2011-11-14T09:55:08.417 に答える
1

私は同じ問題に遭遇しました:新しいphpバージョンは、同じファイル(ライブラリとして)の複数のインクルードで同じことを処理しないため、今、いくつかのinclude_onceによってすべてのインクルードを変​​更する必要があります.

または、ライブラリにクラスが多すぎない場合は、このトリックが役立ちます...

if( class_exists('TestClass') != true )
{
   //your definition of TestClass
}
于 2014-11-12T10:54:49.763 に答える
0

私は同じ問題に遭遇しました。ケースがクラス名であることがわかりました。名前を変えて対処しました。したがって、問題を解決します。

于 2011-07-04T11:35:35.747 に答える
0

実際には、クラスがページで既に宣言されており、それを再作成しようとしていることを意味します。

簡単なテクニックは次のとおりです。

私は次の問題を解決しました。これが少し役立つことを願っています。

if(!class_exists("testClassIfExist"))
{
    require_once("testClassIfExist.php");
}
于 2014-12-25T05:19:39.960 に答える