Как добавить пользовательский тип объекта в CodeIgniter? - PullRequest
0 голосов
/ 11 января 2012

В codeigniter у нас есть стандартные классы фреймворка mvc, моделей, представлений, библиотек и т. Д.Я хотел бы добавить свой собственный набор объектов в CodeIgniter, как мне лучше всего это сделать?например:

каталоги:

controllers
core
helpers
etc..
widgets //custom object type

внутри ядра, у меня может быть класс My_Widget, который расширит все содержимое папки виджетовТогда внутри контроллера у меня может быть что-то вроде:

$this->load->widget('Example_Widget');

1 Ответ

2 голосов
/ 11 января 2012

Я никогда не делал этого, поэтому не могу предложить вам полное решение, но я могу, по крайней мере, попытаться указать вам правильное направление.

Взгляните на класс загрузчика, расположенный в /system/core/Loader.php. Это то, к чему вы обращаетесь, когда используете $this->load. Он содержит ряд методов для загрузки ресурсов разных типов (моделей, библиотек и т. Д.). Возможно, вам удастся избежать дублирования метода model(), переименования его в widget() и обновления путей для проверки каталога /application/widgets. Возможно, вам придется сделать немного больше, например, создать базовый класс CI_Widget, но вы должны иметь возможность построчно проходить через метод и выяснить, что ему требуется для работы.

Надеюсь, это поможет.

Изменить (1/12/2012):

Вот пример кого-то, кто расширяет CodeIgniter для поддержки пользовательского типа ресурса.

Sparks - это система управления пакетами для CodeIgniter, очень похожая на RubyGems для Ruby. Использовать искру просто. После того, как вы изменили среду CodeIgniter для поддержки искр, вы просто устанавливаете спарк и затем загружаете его, используя $this->load->spark('...');. Изменение среды CodeIgniter для поддержки искр просто влечет за собой расширение класса загрузчика для поддержки нового метода sparks().

Код для изменения класса загрузчика доступен здесь . Следуя шаблону в этом файле, вы сможете загружать свои собственные типы ресурсов. В своем предыдущем ответе я сказал, что вы можете избежать изменения файла /system/core/Loader.php, хотя я бы порекомендовал вам придерживаться подхода, используемого искрами, и использовать файл /application/core/MY_Loader.php.

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