# Koenig (03.11.2016 / 13:43)
ramzes, у тебя ядро жирный контроллер
у меня модуль это контроллер.
ядро всего лишь оппосредственный коммутатор между нуждами модуля и функционалом ядра им не являющимся, т.к. не связан ни с чем (тот же скол.класс, или класс кеширования)
допустим
/books/view/1/
core -> module (books, action: view) -> [module: router give me id (1), sql give me data from id 1, template put data, core run books/view tpl]
все, по домам
# ramzes (03.11.2016 / 13:49)
/books/view/1/
core -> module (books, action: view) -> [module: router give me id (1), sql give me data from id 1, template put data, core run books/view tpl]
все, по домам
Ну вот еще этот "гив ми гив ми" вынести в отдельный слой, что бы в твоем модуле не было никакой бизнес логики, и будет то, о чем мы тут все говорим.
ramzes, в простом виде MVC выглядит так:
Браузер -> index.php
index.php -> Роутер
Роутер -> Контроллер
Контроллер -> Объекты и БД
Объекты и ДЗ -данные-> Контроллер
Контроллер -> Шаблонизатор
Шаблонизатор -html-> Контроллер
Контроллер -html-> Браузер
Могу в UML показать, если будет понятнее
L!MP, по сути это модель же получится
# Koenig (03.11.2016 / 13:55)
L!MP, по сути это модель же получится
По сути да, но я не люблю это определение, потому что у многих при слове модель, первая же ассоциация - это модель ORM, т.е доступ к данным и всё, а это не правильно т.к слой бизнес логики значительно шире чем просто работа с БД.
# L!MP (03.11.2016 / 13:53)
Ну вот еще этот "гив ми гив ми" вынести в отдельный слой, что бы в твоем модуле не было никакой бизнес логики, и будет то, о чем мы тут все говорим.
пардонте. а нафига мне тогда это "модуль" будет нужен вообще?
этим вот модулем и станет тот слой о которым ты говоришь, а изначальный будет просто пустышкой и паразитом
модуль action:top допустим (+/-)
<?php
/**
* Created by PhpStorm.
* User: ramzes
* Date: 30.10.2016
* Time: 10:31
*/
namespace microapp;
app::xtpl()->assign('title', 'Темы для EMUI');
if(app::user()->right('hw-themes.view')){
$total = app::sql()->query("SELECT count(*) FROM `hw`;")->count();
$page = app::router()->query(2) ? app::integer()->clear(app::router()->query(2)) : 0;
$list = app::sql()->query("SELECT * FROM `hw` ORDER BY `download` DESC LIMIT ".$page.", 20;")->toArray();
$hws = [];
foreach ($list as $hw){
$hw['cover'] = app::storage()->emuiScreen('0__'.$hw['hash']);
$hw['modules'] = explode('||', $hw['modules']);
$hws[] = $hw;
}
app::xtpl()->assign('add_button', app::user()->right('hw-themes.add') ? '<a class="ajax button" href="/hw-themes/add/"></a>' : '');
app::xtpl()->assign('list', $hws);
app::xtpl()->assign('paginator', app::navi()->total($total)->page($page)->step(20)->url('hw-themes/top'));
app::xtpl()->complite('emui/top');
}else{
app::xtpl()->complite('access-denied');
}
тут и делить то не чего, и так то 36 строк вместе с пустыми и хидером
Koenig, добавь эти смайлы
L!MP, модель же по сути работает с данными, то есть это не обязательно бд, это могут быть массивы, файлы, json ... , модель их должна извлечь и подготовить для вида