誰かがこの問題を引き起こす可能性があることを知っていますか?
PHPの致命的なエラー:クラスを再宣言できません
同じ名前のクラスが複数回宣言されています。多分複数のインクルードを介して。他のファイルを含めるときは、次のようなものを使用する必要があります
include_once "something.php";
多重混入を防ぎます。これは非常に簡単に発生しますが、常に明らかであるとは限りません。ファイルの長いチェーンが相互に含まれている可能性があるためです。
これは、クラスをすでに作成していることを意味します。
例えば:
class Foo {}
// some code here
class Foo {}
その2番目のFooはエラーをスローします。
これは、1つのページでクラスを複数回宣言した場合に発生します。そのクラスをifステートメント(以下のように)でラップするか、別のファイルに入れてrequire_once()
、の代わりにを使用することで修正できますinclude()
。
if (!class_exists('TestClass')) {
// Put class TestClass here
}
使用include_once();
- これにより、コードは 1 回だけ含まれます。
これは、php ライブラリに組み込まれているクラスのいずれかを使用すると発生します。クラス名を Directory として使用しましたが、同じエラーが発生しました。最初にエラーが発生した場合は、使用するクラス名が組み込みクラスのいずれでもないことを確認してください。
__construct
このエラーは、メソッドを複数回定義した場合にも発生することがあります。
これは、PHP の FastCGI のバグが原因で発生することがあります。
再起動してみてください。Ubuntuでは次のとおりです。
service php-fastcgi restart
追加するだけです。
このエラーは、誤って関数を別の関数の中に入れた場合にも発生する可能性があります。
PHP 5.3 (古いバージョンもあると思います) では、同じ名前を別のケースで使用すると問題が発生するようです。したがって、クラス Login とそれが LogIn を実装するインターフェイスがあるときに、この問題が発生しました。LogIn を Log_In に名前を変更した後、問題は解決しました。
Zend Framework を使用しましたか? 私も同じ問題を抱えています。
の次の行をコメントアウトして解決しましたconfig/application.ini
。
;includePaths.library = APPLICATION_PATH "/../library"
これがお役に立てば幸いです。
私は同じ問題に遭遇しました:新しいphpバージョンは、同じファイル(ライブラリとして)の複数のインクルードで同じことを処理しないため、今、いくつかのinclude_onceによってすべてのインクルードを変更する必要があります.
または、ライブラリにクラスが多すぎない場合は、このトリックが役立ちます...
if( class_exists('TestClass') != true )
{
//your definition of TestClass
}
私は同じ問題に遭遇しました。ケースがクラス名であることがわかりました。名前を変えて対処しました。したがって、問題を解決します。
実際には、クラスがページで既に宣言されており、それを再作成しようとしていることを意味します。
簡単なテクニックは次のとおりです。
私は次の問題を解決しました。これが少し役立つことを願っています。
if(!class_exists("testClassIfExist"))
{
require_once("testClassIfExist.php");
}