Именование контроллеров в шаблоне HMVC с использованием пространств имен php - PullRequest
2 голосов
/ 09 марта 2012

У меня есть несколько библиотек, созданных в application/libraries для используемых мной API.

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__;

Но я не получаю ответа от простой функции, которая выдает 'alex', и в моем журнале нет ошибок при вызове контроллера и функции.

1 Ответ

1 голос
/ 09 марта 2012

В PHP 5.3 добавлена ​​поддержка пространств имен. CodeIgniter пока их не поддерживает, но я нашел недавнее сообщение на форуме, в котором утверждается, что есть патч, который позволит вам их использовать.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...