#codeigniter
#codeigniter
Вопрос:
Контроллер Codeigniter, который я пишу, становится большим. Как мне разделить код на разные файлы?
Ответ №1:
Вещи, которые вы определенно должны делать:
-
Все, что строго связано с контроллером, оставьте в покое.
-
Убедитесь, что вы переместили по крайней мере 99% логики просмотра (html) в соответствующие файлы просмотра.
-
Перенести всю обработку данных в модель. Это включает взаимодействие с базой данных, манипулирование файлами и обработку форм.
Вещи, которые вы, вероятно, должны делать:
-
Все, что вы часто повторяете, по возможности создайте для этого функцию.
-
Соберите все связанные функции и создайте библиотеки в
application/libraries/
. -
Все, что осталось, например, независимые общие функции, создайте в вспомогательном файле
application/helpers
. Если вы знаете, что они вам всегда понадобятся, возможно, вызовите этоglobal_helper.php
или что-то подобное. Вы можете разбить их на разные файлы позже, если это станет слишком переполненным. -
Используйте базовый контроллер. Создайте файл
core/MY_Controller.php
. Используйте это для всего, что, как вы знаете, вам понадобится, доступного глобально для ваших контроллеров. Вы можете создать в этом файле столько расширений, сколько захотите, для разных «типов» контроллеров (например, Front_Controller, Back_Controller, Login_Controller), просто не забудьте расширить класс в ваших файлах контроллера, напримерBlog_Controller extends MY_Controller
.
Убедитесь, что вы внимательно прочитали руководство пользователя, чтобы вы могли воспользоваться преимуществами встроенного фреймворка, возможно, вы пишете ненужный код, потому что не знаете о доступных функциях.
Ответ №2:
Похоже, у вас слишком много функций, связанных с разными вещами в вашем контроллере. Попробуйте выяснить, что вы можете разделить на отдельные контроллеры. В противном случае ваш контроллер может превратиться в божественный объект.