ホームページ > php教程 > php手册 > PHP の重大な致命的なエラーの処理:php 致命的なエラー: クラスまたは関数を再宣言できません

PHP の重大な致命的なエラーの処理:php 致命的なエラー: クラスまたは関数を再宣言できません

WBOY
リリース: 2016-11-16 10:24:02
オリジナル
1437 人が閲覧しました

1. エラーの種類: PHP の致命的なエラー

エラーの種類: PHP 致命的エラー

致命的なエラー: (d) 行目の (c) の (a) (以前に (b) で宣言された) を再宣言できません

2. エラーの説明:

このエラー レポートは、既に定義されている関数を再定義しようとしていることを示しています。

a---- 繰り返し定義された関数名を表します。

b----関数が最初に定義されたときのファイル名と行番号

c----関数が 2 回目に定義されるときのファイル名

d----関数が 2 回目に定義されたときの行番号。

3. 原因と解決策:

原因: 同じ名前を 2 回続けて使用して関数を定義したとします。たとえば、

関数 myFunction(){}

関数 myFunction(){}

結果は以下の通りです

致命的なエラー: 1 行目の myfunction()(以前に宣言された in(path):2)in(path) を再宣言できません

解決策:

すでに宣言されている関数を見つけて、それを再度定義する必要がある理由を確認してください。以前に定義したことを単に忘れていた場合は、宣言の 1 つを削除してください。たとえば、スクリプト ファイルが非常に混乱した方法で配置されており、多数の include() やその他の関数を使用している可能性があるため、混乱したコードからアイデアを整理することが困難になります。ただし、PHP のバージョンが比較的新しい (PHP 5.3.8 以降) 場合は、関数を繰り返し定義する必要がある状況を名前空間を使用して解決できるようです。

4 PHP の重大な致命的エラーの処理と解決の例は次のとおりです

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 は自動的にロードされます。同じクラス名を見つけて名前を変更するだけで済みます。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート