0 Пользователей и 1 Гость просматривают эту тему.
  • 16 Ответов
  • 13184 Просмотров
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Провёл небольшой анализ исходного кода нового роутера. Интересно услышать мнение разработчиков.
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Re: Новый роутер Joomla - первый взгляд
« Ответ #1 : 26.02.2016, 12:14:06 »
Мнение такое, что Joomla медленно, но верно приобретает облик профессиональной и гибкой системы. Главный недостаток в том, что развитие идёт очень медленно. 2 года для реализации базового функционала нового роутера, на мой взгляд, — это очень много. Всё потому, что в одиночку этот обоз ни один разработчик не потянет, будь он хоть семь пядей во лбу, как наш герой. А если по мне, то идеальный роутинг должен строиться на регулярных выражениях.
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Новый роутер Joomla - первый взгляд
« Ответ #2 : 26.02.2016, 12:22:49 »
посмотрел, почитал.. если они хотели усложнить жизнь программистам, они с этим отлично справились!
Пока я не вижу никаких плюсов этого похода (в котором нужно написать тону непонятного кода) перед стандартным + прикрутить в хелпере простейший код на 10-20 строк для определения роута!
+ теперь не понятно как вообще делать условия для роутинга!
например у меня в роутере может быть привязка только на один вид (список категорий)
нет переменны, выводим список, одна переменная, выводим категорию, две переменных выводим материал в категории...
Или допустим у меня есть такое:
if ( isset( $segments[0] ) && $segments[0] === 'getFile' ) {
   $vars['task'] = 'file.download';
   $vars['id'] = $segments[1];
   return $vars;
}
То есть если приходит такая ссылка /getFile/1.html
У меня не бежит в вид, у меня выполняет задачу на скачивание файла в контроллере! Как теперь строить подобные условия я не врубился пока!
upd.:
Подозреваю что все можно будет сделать в методе function contentParseRoute($segments) но сильно подозреваю что будут большие проблемы..
« Последнее редактирование: 26.02.2016, 12:29:44 от Istaan »
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Новый роутер Joomla - первый взгляд
« Ответ #3 : 26.02.2016, 12:35:36 »
Ну так это всё в правиле надо делать. Посмотри исходный код правил - там как раз и есть эта реализация.
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Новый роутер Joomla - первый взгляд
« Ответ #4 : 26.02.2016, 13:01:24 »
Так и не понял где смотреть..
на правилах в com_content такие строки:

Код: php
$this->attachRule( new JComponentRouterRulesMenu( $this ) );
$params = JComponentHelper::getParams( 'com_content' );
if ( $params->get( 'sef_advanced', 0 ) ) {
$this->attachRule( new JComponentRouterRulesStandard( $this ) );
}
else {
require_once JPATH_SITE . '/components/com_content/helpers/legacyrouter.php';
$this->attachRule( new ContentRouterRulesLegacy( $this ) );
}
1. new JComponentRouterRulesMenu($this) поиск по коду класса JComponentRouterRulesMenu ничего не дал..
2. JComponentRouterRulesStandard поиск по коду класса JComponentRouterRulesStandard ничего не дал
3. require_once JPATH_SITE . '/components/com_content/helpers/legacyrouter.php';

Естественно такого файла по указанному пути нет!
Так что правилами пока ничего не понятно!
Нужно ждать стабильной версии и документации от разработчиков...или придется самому очень сильно поковыряться.. но подозреваю что это банальная смена шила на мыло...
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Новый роутер Joomla - первый взгляд
« Ответ #5 : 26.02.2016, 13:16:56 »
Вот код стандартного правила из репы Ханса. Смотри там метод parse(&$segments, &$vars) - в нём всё релизовано. Делаешь своё правило, расширяешь Standard. Где надо, делаешь свою обработку, а остальное parent::parse();

В ветке Joomla 3.6.x не хватает файлов. Я спецом написал в материале:
Цитировать
Если вы хотите самостоятельно изучить исходный код, то либо используйте ветку Joomla 3.6.x (но там пока нет некоторых файлов), либо репозитроий Hannes (на момент написания статьи он был актуален).
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Новый роутер Joomla - первый взгляд
« Ответ #6 : 26.02.2016, 13:36:24 »
Мдаа.. почитал. Я единственное непонимаю, зачем так было все усложнять? Куча классов, интерфейсов. В любом фреймворке роутинг это тупо набор регулярок, плюc там еще возможно определить свое правило которое состоит всего из двух методов parse и build.  Тут какой то просто зоопарк классов и методов. Единственная надежда что они от половины избавятся со временем. Также поражают такие вот названия классов: JComponentRouterViewconfiguration, JComponentRouterRulesStandard. Это что за портянка такая в названии класса?  Я понимаю что когда писалась Joomla, то неймспейсы еще не были в php реализованы. Но сейчас то в 2016 году так писать зачем?
интернет-блог: http://websiteprog.ru
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Новый роутер Joomla - первый взгляд
« Ответ #7 : 26.02.2016, 13:52:30 »
Мдаа.. почитал. Я единственное непонимаю, зачем так было все усложнять? Куча классов, интерфейсов. В любом фреймворке роутинг это тупо набор регулярок, плюc там еще возможно определить свое правило которое состоит всего из двух методов parse и build.  Тут какой то просто зоопарк классов и методов. Единственная надежда что они от половины избавятся со временем. Также поражают такие вот названия классов: JComponentRouterViewconfiguration, JComponentRouterRulesStandard. Это что за портянка такая в названии класса?  Я понимаю что когда писалась Joomla, то неймспейсы еще не были в php реализованы. Но сейчас то в 2016 году так писать зачем?
полностью поддерживаю..
Надеюсь что оставят старый метод формирования роутинга, ибо этот как по мне бред сивой кобылы...
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Новый роутер Joomla - первый взгляд
« Ответ #8 : 26.02.2016, 16:09:25 »
Мдаа.. почитал. Я единственное непонимаю, зачем так было все усложнять? Куча классов, интерфейсов. В любом фреймворке роутинг это тупо набор регулярок, плюc там еще возможно определить свое правило которое состоит всего из двух методов parse и build.  Тут какой то просто зоопарк классов и методов. Единственная надежда что они от половины избавятся со временем.
Регулярка, аха... Ну попробуй такую сделать для Joomla, да так, чтобы старое не сломалось. Что-то не вижу пока что желающих :)

Что касается зоопарка - как ещё заставить стороннего разработчика написать правило, которое было бы совместимо с роутером? Или роутер, совместимый с правилами? Для этого нужен интерфейс. Мне тоже сначало показалось, что много всего, но в итоге понимаешь, что без этого никак

Также поражают такие вот названия классов: JComponentRouterViewconfiguration, JComponentRouterRulesStandard. Это что за портянка такая в названии класса?  Я понимаю что когда писалась Joomla, то неймспейсы еще не были в php реализованы. Но сейчас то в 2016 году так писать зачем?
Согласен, но пишут под тройку... В J4 ты этого конечно уже не увидешь.

Цитировать
Надеюсь что оставят старый метод формирования роутинга, ибо этот как по мне бред сивой кобылы...
Конечно оставят. B/C сохранить же нужно.
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Новый роутер Joomla - первый взгляд
« Ответ #9 : 26.02.2016, 16:57:29 »
Регулярка, аха... Ну попробуй такую сделать для Joomla, да так, чтобы старое не сломалось. Что-то не вижу пока что желающих :)
Я бы например желал что то сделать, но с моим английским боюсь что либо никто не поймет что это было.. либо вообще даже смотреть не будут...


Что касается зоопарка - как ещё заставить стороннего разработчика написать правило, которое было бы совместимо с роутером? Или роутер, совместимый с правилами? Для этого нужен интерфейс. Мне тоже сначало показалось, что много всего, но в итоге понимаешь, что без этого никак
Дима о чем ты.. покажи хоть одно расширение где разработчики делают так как нужно, а не пишут свой фреймворк внутри фреймворка! Да 90% напишут костыль  с которым им будет проще в разы!

Согласен, но пишут под тройку... В J4 ты этого конечно уже не увидешь.
Если мы увидим 4-ку ;D

Конечно оставят. B/C сохранить же нужно.
Слава богу..


p.s. многие говорят что в Joomla проблема с роутингом.. а может хоть кто то объяснить в чем эта проблема? Как по мне с ним проблем нету, вообще! Я с легкостью делаю ссылки любой сложности не напрягаясь..
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Новый роутер Joomla - первый взгляд
« Ответ #10 : 26.02.2016, 17:00:07 »
Я бы например желал что то сделать, но с моим английским боюсь что либо никто не поймет что это было.. либо вообще даже смотреть не будут...
Ну переводчики найдутся, не беспокойся.
*

voland

  • Легенда
  • 11031
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Новый роутер Joomla - первый взгляд
« Ответ #11 : 26.02.2016, 17:01:04 »
Вот не надо регулярок!
Кто тестить будет? Те 2,5 человека, что  их понимают?
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Новый роутер Joomla - первый взгляд
« Ответ #12 : 26.02.2016, 17:05:07 »
И вообще если посмотреть ещё раз, то где зоопарк? База реально состоит из следующего:
- 2 интерфейса (роутер и правило);
- 3 класса роутера (базовый, легаси для старых расширений и новый);
- 1 класс конфигурации представления.

Правила не в счёт - это просто довесок. К тому же, Вам не нужно изучать всю эту базу. Нужно будет только понимать принцип работы правил и класса конфигурации представления. В этом и состоит суть API и инкапсуляции в частности - вам не обязательно знать реализацию. В роутере вы только регистрируете список представлений и добавляете правила. Ну да, ещё нужно возвращать сегменты и ID для parse и build.

Мне кажется, когда будет хоть какая-то документация, то всё встанет на свои места. До конца понять логику работы по исходному коду очень непросто.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Новый роутер Joomla - первый взгляд
« Ответ #13 : 26.02.2016, 17:58:30 »
Цитировать
В роутере вы только регистрируете список представлений

Вот это мне вобще непонятно нафига сделано. Мало того что отдельный класс для регистрации представлений, так еще и отдельные классы для конфигураций этих представлений. Зачем это все? Возвращать сегменты, добавлять правила... Зачем это тоже? Нельзя так просто чтоли дать возможность писать свои правила для роутера компонентов и для глобального роутера? И чтобы в этих правилах можно было оперировать сегментами из запросов. И переопределять их плагинами.
интернет-блог: http://websiteprog.ru
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Новый роутер Joomla - первый взгляд
« Ответ #14 : 26.02.2016, 18:02:40 »
Может и можно. Но никто этого не сделал. А он сделал. И PR висел очень долго и видимо всех устроил.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Новый роутер Joomla - первый взгляд
« Ответ #15 : 26.02.2016, 18:10:25 »
На самом деле возможность переопределять правила роутеров компонентов с помощью плагинов появилась еще в роутере для 3.3 версии. Просто никто этого не заметил . Я написал плагин даже под это дело. Надесь он будет работать с новым роутером.
интернет-блог: http://websiteprog.ru
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Новый роутер Joomla - первый взгляд
« Ответ #16 : 26.02.2016, 18:12:42 »
Может и можно. Но никто этого не сделал. А он сделал. И PR висел очень долго и видимо всех устроил.
для меня пока что это выглядит как то так:
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Условия отображения для конкретной группы пользователей Joomla 3.4.x

Автор dmik

Ответов: 15
Просмотров: 2597
Последний ответ 29.05.2020, 22:42:15
от voland
Подключить Joomla Framework в своем файле

Автор kolhoz

Ответов: 1
Просмотров: 1469
Последний ответ 06.12.2017, 17:15:42
от Aleks.Denezh
Переделать запросы к БД под Joomla

Автор Glog

Ответов: 3
Просмотров: 1156
Последний ответ 03.07.2017, 17:53:28
от Glog
Поддержка Joomla в PhpStorm

Автор b2z

Ответов: 51
Просмотров: 10245
Последний ответ 28.12.2016, 23:31:39
от b2z
Joomla search tools

Автор jitendra

Ответов: 2
Просмотров: 1106
Последний ответ 15.12.2016, 17:13:15
от jitendra