下記の様に、PHPでクラスCMSを継承させ、CMS_TYPE1を作ろうとしているのですが、

「Fatal error: Cannot redeclare class cms_type1」
とでてしまいます。
これは何が原因でしょうか?

class CMS_TYPE1 extends CMS{


}

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/11/23 02:32:36
  • 終了:2006/11/23 15:24:07

回答(2件)

id:jestersera No.1

jestersera回答回数16ベストアンサー獲得回数12006/11/23 05:47:28

ポイント35pt

Fatal error: Cannot redeclare class cms_type1 はcms_type1クラスは最定義できません という意味です。

CMS_TYPE1のファイルを2箇所以上でincludeしていませんか?

includeをすべてinclude_onceかrequire_onceに変更してみたらどうですか?

参考

http://www.php.net/manual/ja/function.include-once.php

http://www.php.net/manual/ja/function.require-once.php

id:nakamuraaaaa No.2

nakamura回答回数7ベストアンサー獲得回数22006/11/23 09:43:41

ポイント35pt

原因は、CMS_TYPE1クラスがどこかですでに定義されているためと思われます。

以下のソースを試してもらうとわかりますが、1回目のCMS_TYPE1の定義の時は正常に終了しますが、2回目のCMS_TYPE1の定義時に「Fatal error: Cannot redeclare class cms_type1」が発生します。



■CMS.php

<?php

class CMS {

//クラス定義は省略

}

?>


■CMS_TYPE1.php

<?php

require_once 'CMS.php';

print "CMS_TYPE1を定義\n";

class CMS_TYPE1 extends CMS {

//クラス定義は省略

}

print "CMS_TYPE1の定義完了\n";


print "CMS_TYPE1をもう一度定義\n";

class CMS_TYPE1 extends CMS {

//クラス定義は省略

}

print "CMS_TYPE1の再定義完了\n";

?>



PHPマニュアルのクラスとオブジェクトページが参考になると思います。

http://www.php.net/manual/ja/language.oop.php

http://www.php.net/manual/ja/language.oop5.php

id:makocan

お二人方ありがとうございました!

解決しました!

2006/11/23 15:23:59

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません