人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

下記の様に、PHPでクラスCMSを継承させ、CMS_TYPE1を作ろうとしているのですが、
「Fatal error: Cannot redeclare class cms_type1」
とでてしまいます。
これは何が原因でしょうか?

class CMS_TYPE1 extends CMS{


}

●質問者: makocan
●カテゴリ:コンピュータ インターネット
✍キーワード: Class Class CMS PHP クラス
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● jestersera
●35ポイント

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


2 ● nakamura
●35ポイント

原因は、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

◎質問者からの返答

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

解決しました!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ