2012-03-08 134 views
2

我在application/libraries中爲我使用的API創建了多個庫。使用php的命名空間在HMVC模式中命名控制器

的API:

  • Vimeo的
  • Flickr的

現在我在application/modules/apis/controllers/vimeo.php創建並application/modules/apis/controllers/flickr.php將與庫根據要求通過其他模塊交互。

的問題是,現在我重新聲明的類:

  • 庫/ Flickr.php:

    Class Flickr { }

  • 模塊的/ apis /控制器/ flickr.php:

    Class Flickr extends MX_Controller { }

所以我得到了我的Apache2的錯誤日誌:Cannot redeclare class Flickr in ...

編輯:

因此,有我在modules/apis/controllers/flickr.php文件:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

Class Flickr extends MX_Controller { ... } 

我應該如何使用:

namespace controllers\blog 

class user extends \CI_Controller { 

在這裏解釋:http://codeigniter.com/forums/viewthread/212661/

試着這樣做:

<?php 

//TRIED: 
namespace controllers\flickr; 
namespace Flickr; 
namespace modules\apis\controllers\flickr; 

if (! defined('BASEPATH')) exit('No direct script access allowed'); 

Class Flickr extends \MX_Controller { ... } 

$_ns = __NAMESPACE__; 

但我沒有得到任何來自一個簡單的函數,呼應了「亞歷克斯」在我的日誌中沒有錯誤調用控制器和功能響應。

回答

1

PHP 5.3增加了對命名空間的支持。儘管CodeIgniter不支持它們,但我確實找到了一個最近的論壇帖子,聲稱有一個補丁可以讓你使用它們。

http://codeigniter.com/forums/viewthread/212661/

+0

我檢查出來,現在,TNX – Alex 2012-03-09 10:55:52

+0

這接縫是解決辦法,但不能讓它明白我究竟應該如何應用到我的問題。如何命名空間控制器\博客'類用戶擴展\ CI_Controller {'應該在我的情況? – Alex 2012-03-09 17:10:40

+0

您是否獲得了修補的codeigniter文件? – AndrewR 2012-03-09 18:41:40