ホームページ > バックエンド開発 > PHPチュートリアル > 致命的なエラー: クラスを再宣言できません 原因分析と解決策_PHP チュートリアル

致命的なエラー: クラスを再宣言できません 原因分析と解決策_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:57:39
オリジナル
3442 人が閲覧しました

クラスを自動的にロードするために php __autoload state を使用しています。今日、良いプログラムが実行中にクラスを再宣言できませんというメッセージが表示される方法がわかりません。以下の解決策を分析してみましょう。

エラーメッセージ

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

文字通りの観点から理解すると、クラスが繰り返し定義されていることがわかり、同じ名前のクラスが存在することが原因であることがわかりました。

原因分析

1. 同じ名前のクラスが同じファイル内で 2 回宣言されています:
例:

コードは次のとおりです コードをコピー
クラス Foo {}

// ここにコードをいくつか載せます

クラス Foo {}
?>

2番目のFooでエラーが報告されます。

解決策: 2 番目の Foo を削除するか、名前を変更します。

定義の繰り返しを防ぐために、新しいクラスを定義するときにクラスがすでに存在するかどうかを確認できます:

コードは次のとおりです コードをコピー
if(class_exists('SomeClass') != true)
{
//ここにクラス SomeClass を入れます
}
if(class_exists('SomeClass') != true)
{
//ここにクラス SomeClass を置きます
}


2. 同じクラス ファイルを繰り返しインクルードします:

例: 特定のクラス ファイル some_class.php の場合、a.php 内にある

コードは次のとおりです コードをコピー

「some_class.php」を含める
"some_class.php" をインクルードします;

b.php内

コードは次のとおりです コードをコピー


「a.php」を含めます。 「some_class.php」を含める
「a.php」を含める;
"some_class.php" をインクルードします;

エラーが報告されます。

解決策: 上記の include をすべて include_once に置き換えます

3. このクラスは、PHP クラス ライブラリの組み込みクラスです。

判定方法:空のファイルに書き込む

コードは次のとおりですコードをコピー クラスコム
{

}
?>

この時点では、「クラス Com を再宣言できません」というプロンプトが表示され、このクラスが PHP の組み込みクラスであることを示します。故障中。

さらに、Com などのあまりにも一般的なクラス名の使用は避けてください。このクラスは Linux では正常ですが、Windows 環境では実行できません。


オンラインで見つけた別の解決策を覚えておいてください。状況によっては役立つかもしれません。最初に覚えておいてください

コードは次のとおりです コードをコピー


if (!class_exists('pageModule')){
require_once(PATH_site.'fileadmin/scripts/class.page.php');
}

上記の方法は、php __autoload クラスのロードを使用する方法には適用されませんが、__autoload が自動的にロードされるため、同じクラス名を見つけて名前を変更するだけで問題は解決できます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632073.html技術記事 php __autoload stateを使用してクラスを自動的にロードします。今日、プログラムが実行時に致命的なエラーを表示する方法がわかりません。クラスが繰り返し定義されているようです。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート