2014-10-10 2 views
3

Я хочу использовать сторонний модуль в моих нескольких проектах на yii. Например, комментарии модуля https://github.com/segoddnja/Comments-moduleКак переопределить метод из модели модуля в yii?

Обычно необходимо внести некоторые изменения в модуль для конкретного проекта. Если мне нужно использовать вид costom, я просто скопирую их в тему и изменю. Как я могу переопределить метод из класса php, который находится в модуле? Например, я хочу изменить метод в классе модели. Как я могу это сделать?

Заранее спасибо

+0

я не понимаю вашу проблему, но просто найти файл модели внутри каталога модулей внутри модулей приложения директории, переопределить метод, который вы хотите, и не стесняйтесь – osmancode

+0

вы можете дать мне пример кода, который позволит мне простирается от эту модель модуля https://github.com/segoddnja/Comments-module/blob/master/models/Comment.php и переопределить какой-либо метод. где я должен поставить файл, который расширит эту модель? –

+0

@ Mikola laviro, если ваш модуль уже загружен в основное приложение, вы можете переопределить модель, помещая вашу пользовательскую модель, например, на protected/components/mymodel.php, используя наследование: class mymodel extends ModuleModel {....,} –

ответ

0

Если вы используете этот модуль комментариев репо много, но мне кажется, что это просто не так, как вам нравится (или необходимость) его, а затем раскошелиться его!

Прокрутите репо и отредактируйте код так, как вам нравится. Только вы знаете, как вам нужно работать. Добавьте в свои собственные пользовательские функции, свои собственные помощники, полностью уничтожьте существующие функции, чтобы работать так, как вы хотите.

Помните, что с ООП ваш фокус - возможность повторного использования. Создавайте классы и функции, которые вы можете использовать для будущих проектов.

Если у вас есть функция, которую вы используете каждый раз, но для 1 из 10 проектов вам необходимо ее изменить, а затем расширить. Вы можете расширить свой класс и переопределить функцию. Так что единственное, что изменилось бы, было бы добавить новый класс, который расширяет ваш существующий, и ТОЛЬКО имеет те немногие функции, которые вам нужно переопределить.

Чтобы расширить его, вы просто создадите новый файл в компонентах, как кто-то сказал. Если вы не подгоняете основную конфигурацию, все файлы в каталоге компонентов автоматически загружаются. Просто убедитесь, что имя файла совпадает с именем класса!

Посмотрите, например, на свой комментарийМодуль. Они расширяют CWebModule. CommentsModule имеет все функции и переменные, которые CWebModule имеет, но может иметь больше функций/переменных или переопределять те, которые определены в CWebModule. Он по сути захватил его.

Class CommentsModule Extends CWebModule{} 
Смежные вопросы