Форум → Программирование → Пыхнуть хотите? → Готовые решения → DVelum платформа профессиональной web-разработки
DVelum платформа профессиональной web-разработки
Страницы: ← Следующая страница →
-
Хотел бы поделиться информацией о необычном решении - DVelum Professional Web-Development Platform.
Проект пока не имеет аналогов, возможно покажется интересным.
Мы работаем над платформой профессиональной разработки на PHP + ExtJS
DVelum представляет из себя необычную смесь CMS, Framework и IDE, призвана упростить и автоматизировать рутинные задачи разработчиков. Содержит полезный, местами уникальный набор функционала, который не оставит равнодушным профессионального разработчика.
Дополнительный бонус - высочайшая производительность приложений, написанных на платформе.
Платформа совершенно бесплатна, распространяется под лицензией GNU GPL v3
Мы открыты конструктивной критике, отзывам и предложениям.
Ресурсы:
Официальный сайт: http://dvelum.ru
Форум ддержки: http://forum.dvelum.net
Группа FB: https://www.facebook.com/DVelum
Группа VK: http://vk.com/dvelum
Twitter: https://twitter.com/dvelum
Статьи:
habrahabr: http://habrahabr.ru/post/149853/
freehabr: http://freehabr.ru/blog/php/3225.html
и др.
Скринкаст демонстрирующий возможности системы:
http://www.youtube.com/watch?v=ykMJOzkD4Bg -
18 января 2013 г. 16:02, спустя 1 час 18 минут 36 секунд
Видео не асилил. Моё мнение - ни о чём. Чем это отличается от скафолдинга Yii? навёртом на Ext-е?
Возникают вопросы:
- Нахера это заказчику?
- Нахера это исполнителю?
Как по мне, чтобы работать в таком, надо нехило знать всю эту систему, при чём очень хорошо документированную, в код даже смотреть страшно… -
-
-
18 января 2013 г. 22:40, спустя 4 часа 28 минут 44 секунды
sam, Знаете почему ваша система отстой, потому что я ее не могу развернуть, так как у нее в требованиях документ_рут, у меня все скрипты могут работать независимо от их расположения. Разве так сложно использовать dirname(__FILE__) или __DIR__?
Что касаемо кода, заглянул в контроллеры:
1. Толстые контроллеры;
2. Много статики, фабрик и повторяющейся шулухи, используйте внедрение зависимостей;
3. Много шаблонного кода, который можно вытянуть в родительский класс.
К примеру, метод из контроллера News:
public function indexAction()
{
$page = intval(Request::getInstance()->getPart(1));
if($page < 1)
$page = 1;
$from = ($page-1) * $this->_config->get('num_in_list');
$model = Model::factory('News');
$params = array(
'sort'=>'news_date',
'dir'=>'DESC',
'start'=>$from,
'limit'=>$this->_config->get('num_in_list')
);
$filters = array('published'=>true);
/*
* Hard cache!
*/
$data = $model->getList(
$params,
$filters,
array('id','title','news_date'),
true
);
$itemsCount = $model->getCount($filters,false,true);
$pager = new Pager();
$pager->curPage = $page;
$pager->numLinks = 5;
$pager->pageLinkTpl = Request::url(array($this->_router->findUrl('news') , '[page]'));
$pager->numPages = ceil($itemsCount / $this->_config->get('num_in_list'));
$template = new Template();
$template->list = $data;
$template->page = $this->_page;
$template->pager = $pager;
$template->router = $this->_router;
$this->_page->text = $template->render($this->_page->getTemplatePath('news_list.php'));
}
Зачем в контроллере пагинатор? Зачем в контроллере шаблонизатор? Да, это понятный код, но не поддерживаемый. -
18 января 2013 г. 23:04, спустя 24 минуты 38 секунд
as i told, we have a piece of shit here.Сапожник без сапог -
-
19 января 2013 г. 10:28, спустя 8 часов 14 минут 2 секунды
sam, Знаете почему ваша система отстой, потому что я ее не могу развернуть, так как у нее в требованиях документ_рут, у меня все скрипты могут работать независимо от их расположения. Разве так сложно использовать dirname(__FILE__) или __DIR__?
Что касаемо кода, заглянул в контроллеры:
1. Толстые контроллеры;
2. Много статики, фабрик и повторяющейся шулухи, используйте внедрение зависимостей;
3. Много шаблонного кода, который можно вытянуть в родительский класс.
….
Зачем в контроллере пагинатор? Зачем в контроллере шаблонизатор? Да, это понятный код, но не поддерживаемый.
Конструктивно, могу ответить по существу.
К документ руту система привязана не случайно. Мы не раз слышали критику на этот счет. Есть доля правды в ваших словах.
Такое поведение обусловлено особенностями работы системы а именно дизайнером интерфейсов. Сложность структуры дизайнера пока не позволяет такие установки. Нет возможности переформировать проект js интерфейса собранный допустим в док руте а используемый в поддиректории или просто собранный в поддиректории с другим именем.
Тем не менее этот вопрос уже находится в нашем треккере, и будет решен в свое время.
Статики и фабрики, согласен это legacy лежащий годами, мы постепенно избавляемся от них
Внедрение зависимостей активно используется, например внедрение через сеттеры в Application::init
Шаблонный код так же стараемся выносить в базовые сущности.
пример который вы привели - модуль новостей в демо релизе служит лишь упрощенным примером, дабы помочь пользователю разобраться с системой
Зачем в контроллере пагинатор, согласен он там не нужен его можно перенести шаблон.
Зачем в контроллере вызов шаблона, а кто по вашему его должен вызывать роутер? тогда потеряется еще больше гибкости.
Ребята тут пишут ниже про psr да слышали мы про них. Это не больше чем рекомендации.
Мы использовали Zend_Framework 1.x coding style тогда еще PSR то небыло, а уж видя то как принимаются эти псевдостандарты названные рекомендациями вообще не хочется с этим связываться.
Несколько человек решили что они лучше знают чем сообщество и черкают свое понимание в гитхабе. Ели бы было всеобщее голосование, да можно было бы относится к этому более серьезно. Посмотрите что такое PSR 3 вы все еще серьезно относитесь к этому?
Не смотря на все это мы открыты к пожеланиям и предложениям, активно внедряем возможности и исправляем структуру проекта по запросам пользователей.
За не долгий срок существования проекта получили много дельных советов от иностранных пользователей, пожеланий дальше развивать проект.
От Русских разработчиков 80% возгласов "Что это за хуИта…. скринкаст не досмотрел доки не дочитал ничерта не понял". Такова она наша сущность задумайтесь над этим. -
-
19 января 2013 г. 11:37, спустя 1 час 1 минуту 34 секунды
sam, это просто форум такой специфический. здесь нежным не место :) здесь даже работодателей посылают нах!
про фреймворк ничего не скажу, т.к. некогда. просто желаю вам удачи!ιιlllιlllι унц-унц -
19 января 2013 г. 13:48, спустя 2 часа 10 минут 49 секунд
sam, как реализуете возможно запускание вне документ_рут, отпишитесь в эту тему. -
19 февраля 2013 г. 17:24, спустя 31 день 3 часа 36 минут
Зачем в контроллере пагинатор?
с этого места можно поподробнее? куда ты предлагаешь вынести пагинатор из контроллера?не всё полезно, что в swap полезло -
23 февраля 2013 г. 23:06, спустя 4 дня 5 часов 41 минуту
с этого места можно поподробнее? куда ты предлагаешь вынести пагинатор из контроллера?
В модель логику, в вьюху интерфейс.
ну смотри есть у тебя, список который возвращает записи, список всегда должен возвращать записи, без разницы есть пагинатор ли нет. Например, хочешь вывести ты список без пагинатора, делаешь так.
public function index(){
$records = $model->collection();
return array(
'records' => $records
);
}
с пагинатором,
public function index($page){
$records = $model->collection($page);
return array(
'records' => $records
'paginator' => $model->getPaginator()
);
} -
24 февраля 2013 г. 8:17, спустя 9 часов 10 минут 33 секунды
proga66, ок. а как ты предлагаешь в пагинатор загружать url для ссылок?
т.е. каждая страница, на которую ссылается пагинатор, - это ссылка, и для этой ссылки нужен url. понятно что page_id прямо передаётся, но есть остальная часть ссылки типа
/blabla/articles/?author=vasya&page=123
либо
/blabla/articles/vasya/123
как видишь, формат ссылок может быть разным
захардкодить в модели или шаблоне - бэд практис. в шаблоне ещё куда ни шло, но в модели - точно бэд практис
ну и вообще говоря, модель ничего не должна знать о пагинаторе. модель должна только доставать данные из хранилища и сохранять обратно. а пагинатор - это отдельная сущность, которая получает
- current_page,
- total_pages,
- url для ссылок (либо шаблон для sprintf, либо вовсе колбэк)
- шаблон (потому что один и тот же пагинатор может быть совсем по-разному отрисован в html).не всё полезно, что в swap полезло -
24 февраля 2013 г. 12:17, спустя 4 часа 35 секунд
master,
О вьюхе:
1) Ссылки и пагинатор, всегда должны строиться во вьюхе, если ссылки будут строиться в контроллере, то это ахтунг;
2) Вьюха должна решать, что ей надо, а что ей не надо. Как ей строить ссылки, как подключать шаблоны, все это должна решать сама вьюха, полагаясь на данные которые ей передали.
3) Название шаблона для пагинатора, можно указать в контроллере, НО только название, а не путь до шаблона или инициализированный кусок шаблонизатора. Ни в коем случае нельзя конкретизировать тип вьюхи, для которой предназначаются эти данные.
О модели:
1) Ты просишь у модели список записей, тупо список записей, ты его получаешь;
2) Ты указал модели, что хочешь получить список записей, но со смещением таким то и в таком то количестве, проще говоря ты указал состояние модели, но в ответ ты получаешь так же тупо список записей, но с маленькой помаркой, модель как то получала этот список записей и от этого у нее появились об сием действии данные, она их кинула в один из своих свойств(атрибутов). Ты опять же получаешь свой список записей, но если тебе нужен пагинатор, то ты тупо эти данные забираешь у модели с помощью контролера, через метод $model->getPaginator(), и отдаешь их вьюхе, а вьюха видя наличие этих данных радостно строит по ним пагинатор. Все хэппи энд.
Я не понимаю, почему я на столько очевидные вещи доказываю пользователю с ником master.
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!