使用php';在HMVC模式中命名控制器;的命名空间


Naming controllers in HMVC pattern using php's namespaces

我在application/libraries中为我使用的API创建了多个库。

API:

  • Vimeo
  • Flickr

现在,我已经在application/modules/apis/controllers/vimeo.phpapplication/modules/apis/controllers/flickr.php中创建了它们,它们将根据其他模块的请求与库进行交互。

问题是,现在我重新声明类:

  • librarys/Flickr.php:

    Class Flickr { }

  • 模块/api/controllers/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__;

但我没有从一个简单的函数中得到任何响应,该函数会回显"alex",在我调用控制器和函数的日志中也没有错误。

PHP 5.3增加了对名称空间的支持。CodeIgniter还不支持它们,但我确实在最近的论坛上发现了一篇帖子,声称有一个补丁可以让你使用它们。

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