2012-03-08 130 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