Я задал этот вопрос ранее: Codeigniter Class Inheritance между модулями (wiredesigns)
Я принял ответ на этот вопрос, который предоставил мне способ сделать то, что я хочу, расширив пользовательский контроллер в приложении / ядре. Такой подход казался разумным и предлагал дополнительное преимущество, позволяющее обеим модулям функционировать независимо.
Однако, подумав об этом, я не уверен, что это лучший подход для этой ситуации, потому что контроллер My Products потребует почти всех функциональных возможностей контроллера элементов, поэтому такой подход оставит мой контроллер элемента почти пустым – я не уверен Мне это нравится.
ВОПРОС 1
Хотя я могу по-прежнему придерживаться ранее предложенного подхода, я хотел бы знать, есть ли способ расширить классы между модулями, чтобы я мог взвесить два варианта (см. Исходный вопрос ниже)
ВОПРОС 2
Кроме того, я думаю, что мне нужно будет повторно использовать большую часть моего модельного класса, я вижу, что смогу сделать это, используя MY_Model в приложении / ядре. Но…
a) Есть ли способ прямого доступа к другим моделям модулей?
б) Могу ли я продлить свои модели между модулями так же, как вопрос 1 для контроллеров
ПРЕДЫДУЩИЙ ВОПРОС
В моем приложении CI2 используется модульная компоновка wiredesigns.
У меня есть два модуля под названием item и product в папке aa, называемые модулями:
/application /modules /item /product
В элементе I есть контроллер, называемый элементом, который начинается следующим образом.
class Item extends MX_Controller { //code here }
Что мне нужно сделать, чтобы мой контроллер продуктов расширил мой контроллер элемента в другом модуле
Правильный ответ здесь:
не
Почему вы пытаетесь это сделать? Поместите свою логику в библиотеку или какой-то общий файл и вместо этого выполните вызов этой библиотеки.
Вы можете сделать Item
абстрактным классом в папке application/libraries
и автозагрузчик, встроенный в HMVC, автоматически загрузит его. Нет причин, по которым это должно быть в модуле, и определенно не нужно быть контроллером.