2017-04-05 89 views
0

,我發現了錯誤:CodeIgniter的致命錯誤:不能重新聲明類

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

這兩個類如下:

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的實體類。

我不明白這兩個名稱是不同的是衝突。我正在使用CodeIgniter 3.1.4

任何人有一個想法如何解決這個問題?

感謝先進!

+0

把'require_once'取出來,你可能不需要它。 – aynber

+0

但我需要與Entities/News.php,CRUD操作交互。 – omixam

+0

它可能已經通過CI的自動加載器加載。這就是爲什麼它會試圖宣佈這個班級兩次。 – aynber

回答

1

你有兩個同名的班級。

require_once包含的文件被稱爲News.php,因此我假設它是一個名爲News的類。

然後你還有一個新聞類的教義。有兩個類在相同的名稱空間中具有相同的名稱,而php不允許這樣做。您將需要考慮使用名稱空間或更改其中一個類的名稱。

請注意,它不是模型本身在codeigniter中,而是使用require once包含的文件,它與您的Doctrine News類衝突。

+0

我在不同的目錄中有一個叫News和其他叫News_model的類。 – omixam

+1

名稱空間是在php實例的上下文中,而不限於目錄。在'models/Entities'或教義中更改News類的名稱,該錯誤將消失。 – coderodour

+0

model/Entities/News.php是doctrine類,沒有兩個News.php類 – omixam

相關問題