2017-04-05 15 views
0

を再宣言することはできません:CodeIgniterの致命的なエラー:クラスに私はエラーを取得しています

Fatal error: Cannot redeclare class News in application\models\Entities\News.php

2つのクラスは以下の通りです:

application/models/News_model.php

<?php 
require_once(APPPATH."models/Entities/News.php"); 

class News_model extends CI_Model { 

    function __construct() { 
     parent::__construct(); 
    } 
} 

application/models/Entities/News.php

<?php 
use Doctrine\ORM\Mapping as ORM; 

/** 
* News 
* 
* @ORM\Table(name="news", indexes={@ORM\Index(name="slug", columns {"slug"})}) 
* @ORM\Entity 
*/ 
class News { 
} 

最初のクラスはモデルで、最後のクラスはDoctrineのエンティティクラスです。

2つの名前が異なるかどうかは、どちらが競合しているかわかりません。

私はCodeIgniter 3.1.4を使用しています。

誰でもこの問題を解決する方法がありますか?

ありがとうございました!

+0

'require_once'を取り出して、必要ないかもしれません。 – aynber

+0

しかし、Entities/News.php、CRUD操作と対話する必要があります。 – omixam

+0

既にCIのオートローダーを介してロードされている可能性があります。だから、クラスを2回宣言しようとしているのです。 – aynber

答えて

1

同じ名前のクラスが2つあります。

require_onceに含まれるファイルはNews.phpと呼ばれているため、Newsという名前のクラスであると仮定します。

また、DoctrineにNewsクラスもあります。 2つのクラスが同じ名前空間にあり、PHPはそれを許可しません。名前空間を調べたり、2つのクラスのいずれかの名前を変更したりする必要があります。

コードシニターではモデル自体ではありませんが、Doctrine Newsクラスと競合しているrequire onceを使用してファイルが含まれています。

+0

私はNewsという名前のクラスと、News_modelという名前のクラスを別々のディレクトリに持っています。 – omixam

+1

名前空間はphpインスタンスのコンテキストにあり、ディレクトリに限定されません。 'models/Entities 'やdoctrineのNewsクラスの名前を変更すると、そのエラーはなくなります。 – coderodour

+0

モデル/エンティティ/ News.phpはdoctrineクラスです.2つのNews.phpクラスはありません – omixam

関連する問題