Я хотел бы поделиться своей структурой приложения здесь.
Я начинаю с модели. Я пишу 1 модель для одной таблицы в базе данных MySQL. У меня уже есть класс MY_Model
, который я помещаю в папку system/application/libraries/
. В этом классе есть методы get_detail
, get_list
, get_total
, get_all
, insert
, update
и delete
. Я храню имя таблицы в переменной, поэтому в основном мне нужен этот код в модели, чтобы он работал:
class Some_table_model extends MY_Model {
function Some_table_model()
{
$this->tablename = 'some_table';
$this->primary_key = 'id';
}
}
Обновление : после еще одного проекта я добавил новый var для хранения имени столбца, используемого для первичного ключа в таблице. Таким образом, у меня будет больше гибкости, если не жестко закодировать имя столбца для первичного ключа в MY_Model
.
Для контроллера я создаю его в соответствии с его использованием пользователем. Пример для продукта, у меня будет этот контроллер:
function Product extends Controller {
function index()
{
//display product list, paginated
}
function admin()
{
//protected by session
//display product list for admin, paginated
//handle POST request to delete a product or products
}
function form()
{
//protected by session
//handle add/edit product for admin
}
}
Вид связан с контроллером. Для вышеуказанного контроллера у меня будет как минимум 3 вида файла:
product_list.php
product_admin.php
product_form.php
Вид можно поместить в subdir, например, я могу расположить его так:
system/application/views/front/product.php
system/application/views/admin/product_list.php
system/application/views/admin/product_form.php
Если у продукта есть категория, мне понадобится другая таблица и модель для него, но для контроллера я могу поместить страницу в контроллеры продукта, добавив категорию в имя функции:
function category_admin()
{
//get parameter
//...
//process data
//...
//redirect or load view
//...
}
function category_form()
{
//get parameter
//...
//process data
//...
//redirect or load view
//...
}
Это то, что я делаю, и это работает для меня. Надеюсь, что это поможет вам найти лучший способ реорганизовать код CodeIgniter.