Перейти к содержимому


Фото
* * * * * 1 голосов

Когда выйдет обновление?


  • Закрыто Тема закрыта
137 ответов в теме

#21 pikusov

pikusov

    Автор Simpla CMS

  • Администратор
  • 946 сообщений

Опубликовано 06.10.2016 - 01:10

то он возьмет файл уже с правками 1го модуля и добавит туда изменения которые внесет 2й. и тд

 

Но автор модуля не может знать на чистую систему его поставят или поверх других модулей



#22 yr4ik

yr4ik
  • Фрилансер
  • 698 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:Украина Чернигов

Опубликовано 06.10.2016 - 01:11

Но автор модуля не может знать на чистую систему его поставят или поверх других модулей

 

Ну эта проблема везде будет присутствовать...


Изменено: yr4ik, 06.10.2016 - 01:12


#23 pikusov

pikusov

    Автор Simpla CMS

  • Администратор
  • 946 сообщений

Опубликовано 06.10.2016 - 01:13

то он возьмет файл уже с правками 1го модуля и добавит туда изменения которые внесет 2й. и тд

 

PS:

 

Конфликты модулей по любому какие то да будут. Этого никак не избежать.

Например 1й (модуль) добавит метод get_xx в класс Products. И 2й - так же. 

В итоге мы получим php ошибку на дубль метода.

С этой стороны кажется что способ через наследования - лучше (если будут приоритеты и тд). 

Но на мой взгляд это не так. Поскольку даже так нормальной работы обоих модулей не будет.

 

Вот например добавить поле в sql выборку товара.

Через наследование - это нужно подменять весь метод. Тогда как вообще будут работать 2 модуля с одним методом?  

Если автор модуля будет культурным человеком, то он просто вызовет parent::get_xx, изменит то что ему нужно и выдаст результат дальше



#24 yr4ik

yr4ik
  • Фрилансер
  • 698 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:Украина Чернигов

Опубликовано 06.10.2016 - 01:20

Если автор модуля будет культурным человеком, то он просто вызовет parent::get_xx, изменит то что ему нужно и выдаст результат дальше

 

Ну конкретно о sql запросе. 2 модуля на добавление поля field1 (модуль1) и field2 (модуль2) в запрос на get_product. 

Как будут выглядеть модули через наследование? 



#25 ABSORBER

ABSORBER
  • Модератор
  • 381 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Хабаровск

Опубликовано 06.10.2016 - 09:49

На мой взгляд, удачная архитектура модульности предложена в ImageCMS.



#26 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 5 680 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 06.10.2016 - 12:30

На мой взгляд, удачная архитектура модульности предложена в ImageCMS.

Поддерживаю! Я об этом когда-то писал Денису, но никакой реакции.
В этой CMS используется шаблон проектирования HMVC, что в первую очередь нужно сделать в симпле.

#27 pikusov

pikusov

    Автор Simpla CMS

  • Администратор
  • 946 сообщений

Опубликовано 06.10.2016 - 12:50

Ну конкретно о sql запросе. 2 модуля на добавление поля field1 (модуль1) и field2 (модуль2) в запрос на get_product. 

Как будут выглядеть модули через наследование? 

Во-первых в get_product будет запрос SELECT * - так что поле подтянется само, если есть в базе
Если же эти поля, например, внешние ключи от других таблиц, то два модуля могут выглядеть примерно так:

 

class MyModule1 extends MyModule1\Products
{
	public function get_product($id)
	{
		$product = parent::get_product($id);
		$product->some_data1 = $this->db->***;
		return $product;
	}

}

class MyModule2 extends MyModule2\Products
{
	public function get_product($id)
	{
		$product = parent::get_product($id);
		$product->some_data2 = $this->db->***;
		return $product;
	}

}



#28 pikusov

pikusov

    Автор Simpla CMS

  • Администратор
  • 946 сообщений

Опубликовано 06.10.2016 - 12:54

Поддерживаю! Я об этом когда-то писал Денису, но никакой реакции.
В этой CMS используется шаблон проектирования HMVC, что в первую очередь нужно сделать в симпле.

Он не решает указанной проблемы, вместо этого беспощадно усложняет архитектуру.

Наследование же оставляет код симплы таким же простым как и раньше, при этом дает возможность изменить абсолютно любой код, а не только тот, который заранее спроектирован под возможность изменения



#29 pikusov

pikusov

    Автор Simpla CMS

  • Администратор
  • 946 сообщений

Опубликовано 06.10.2016 - 13:23

Ну конкретно о sql запросе. 2 модуля на добавление поля field1 (модуль1) и field2 (модуль2) в запрос на get_product. 

Как будут выглядеть модули через наследование? 

 

Еще один из возможных вариантов:

 

class Products extends Simpla
{
	protected fields = array('name', 'price');
	public function get_product($id)
	{		
		$this->db->query('SEELCT ?@ FROM products WHERE id=?', $this->fields, $id);
		return $this->db->result();
	}
}


class MyModule1 extends MyModule1\Products
{
	public function __construct()
	{
		parent::__construct();
		$this->fields = array_push(parent::$fields, 'новоеполе1');
	}
}

class MyModule1 extends MyModule2\Products
{
	public function __construct()
	{
		parent::__construct();
		$this->fields = array_push(parent::$fields, 'новоеполе2');
	}
}


#30 ABSORBER

ABSORBER
  • Модератор
  • 381 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Хабаровск

Опубликовано 06.10.2016 - 15:16

Он не решает указанной проблемы, вместо этого беспощадно усложняет архитектуру.

Наследование же оставляет код симплы таким же простым как и раньше, при этом дает возможность изменить абсолютно любой код, а не только тот, который заранее спроектирован под возможность изменения

При HMVC не сильно то и усложнится архитектура.

Любой веб-программист, разбирающийся в MVC, с легкостью напишет модуль под CMS.

Если вы боитесь увеличить код ядра на 2 тысячи строк, тогда да... Это проблема.

 

К примеру когда писал модуль для ImageCMS, мне понадобилось менее 4х дней на создание конструктора форм.

Достаточно просто написать вменяемую документацию для разработчиков.



#31 ABSORBER

ABSORBER
  • Модератор
  • 381 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Хабаровск

Опубликовано 06.10.2016 - 15:18

Для новой версии я бы перевел класс database в Query Builder, типа того как используется в Laravel

Очень удобная вещь!



#32 yr4ik

yr4ik
  • Фрилансер
  • 698 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:Украина Чернигов

Опубликовано 06.10.2016 - 16:48

Во-первых в get_product будет запрос SELECT * - так что поле подтянется само, если есть в базе
Если же эти поля, например, внешние ключи от других таблиц, то два модуля могут выглядеть примерно так:

 

Ну это нужно будет перелопатить весь движок. И то не получится предсказать все желания для авторов модулей...

Вот например если нужен JOIN? (это еще простые примеры)

 

Еще один из возможных вариантов:

Я например автор модуля MyModule2. Ты MyModule1.

Как мне знать что нужно еще тебя наследовать? Или я не так смысл понял? 



#33 pikusov

pikusov

    Автор Simpla CMS

  • Администратор
  • 946 сообщений

Опубликовано 06.10.2016 - 17:03

Ну это нужно будет перелопатить весь движок. И то не получится предсказать все желания для авторов модулей...

Вот например если нужен JOIN? (это еще простые примеры)

 

Еще один из возможных вариантов:

Я например автор модуля MyModule2. Ты MyModule1.

Как мне знать что нужно еще тебя наследовать? Или я не так смысл понял? 

Вам не нужно знать кого наследовать, вы наследуете класс "class MyModule1 extends MyModule1\Products" а не "class MyModule1 extends Products". Симпла в итоге сама составит цепочку наследований class MyModule2 extends class MyModule1 extends Products

 

Если нужен join - этот пример я привел первым. Ну или, в крайнем случае, вы можете вообще весь метод переопределить. В любом случае никакой "другой" модульностью вы не сможете сделать гибче чем предлагаю я.



#34 yr4ik

yr4ik
  • Фрилансер
  • 698 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:Украина Чернигов

Опубликовано 06.10.2016 - 17:29

Вам не нужно знать кого наследовать, вы наследуете класс "class MyModule1 extends MyModule1\Products" а не "class MyModule1 extends Products". Симпла в итоге сама составит цепочку наследований class MyModule2 extends class MyModule1 extends Products

 

Если нужен join - этот пример я привел первым. Ну или, в крайнем случае, вы можете вообще весь метод переопределить. В любом случае никакой "другой" модульностью вы не сможете сделать гибче чем предлагаю я.

 

Ну переопределить весь метод - это самое простое.

Главное то бы другие модули точно так же не делали...

 

И еще вопрос: 

А как быть с изменениями шаблонов? 


Изменено: yr4ik, 06.10.2016 - 17:30


#35 Kors

Kors
  • Фрилансер
  • 3 522 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Россия

Опубликовано 06.10.2016 - 18:59

Ну переопределить весь метод - это самое простое.
Главное то бы другие модули точно так же не делали...

 

И какая же получается модульность? Вот я один буду как барин - что хочу, то и ворочу, и вы там, все прочие, делайте аккуратно и по мелочи только, чтоб мой великий код не попортить...

 

Пока все похоже на дележ шкуры неубитого медведя...

 

Вы бы привели со своей модульностью какой нибудь несложный, но реально полезный пример.

 

Скажем, так:

модуль 1 добавляет поле в таблицу заказов и покупателей, чтобы новое поле работало везде, где работают текущие,

модуль 2 добавляет поле только в таблицу заказов,

модуль 3 добавляет поле только в таблицу покупателей,

модуль 4 добавляет ДВА поля только в таблицу покупателей, при регистрации требуется, чтобы хотя бы одно из полей было заполнено,

модуль 5 добавляет ДВА поля только в таблицу заказов, при заказе требуется, чтобы хотя бы одно из полей было заполнено.

 

Как это будет выглядеть реально код, очень интересно бы посмотреть. Я пока слабо представить, как примерно надо писать подобные  модулей, чтоб можно было эти модули ставить в разных вариациях и все работало...



#36 yr4ik

yr4ik
  • Фрилансер
  • 698 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:Украина Чернигов

Опубликовано 07.10.2016 - 01:12

опять началось!

Корс хватит флудить! 

Вот тебе форум. Там оценят твои способности по достоинству

 

Все то что ты пишешь обсуждалось еще начиная с  #20 поста


Изменено: yr4ik, 07.10.2016 - 01:15


#37 pikusov

pikusov

    Автор Simpla CMS

  • Администратор
  • 946 сообщений

Опубликовано 07.10.2016 - 18:01

Ну переопределить весь метод - это самое простое.

Главное то бы другие модули точно так же не делали...

 

И еще вопрос: 

А как быть с изменениями шаблонов? 

http://www.smarty.ne...inheritance.tpl

{block 'footer'}
Этот блок переопределен полностью
{/block}

{block 'pagination' prepend}
Этот текст добавится перед блоком
{/block}

{block 'categories' append}
Этот текст добавится после блока
{/block}




#38 yr4ik

yr4ik
  • Фрилансер
  • 698 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:Украина Чернигов

Опубликовано 07.10.2016 - 20:34

http://www.smarty.ne...inheritance.tpl



{block 'footer'}
Этот блок переопределен полностью
{/block}

{block 'pagination' prepend}
Этот текст добавится перед блоком
{/block}

{block 'categories' append}
Этот текст добавится после блока
{/block}


 

Ну это опять же потребует правок для адаптации по всему движку...

Ну ладно, будем ждать релиза. 

 

По поводу приоритета модулей вижу 2 варианта:

1) Использовать имена файлов модулей и читать по очереди просто. Или можно добавить жесткие требования к имени и тогда даже грузить их по необходимости. пример: products_1_mymodule.php 

 

2) Через какой то пусковой файл который будет хранить настройки заданные юзером (вкл/выкл, приоритет + может еще что то).



#39 Julius123

Julius123
  • Пользователь
  • 215 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Украина

Опубликовано 07.10.2016 - 21:54

Предлагаю еще сделать адаптивный шаблон админки. Очень часто приходится заходить в админку со смартфона и сайзить пальцами чтобы что-то увидеть.



#40 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 5 680 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 08.10.2016 - 06:27

Предлагаю еще сделать адаптивный шаблон админки. Очень часто приходится заходить в админку со смартфона и сайзить пальцами чтобы что-то увидеть.

Это нужно -1% владельцам магазина.




0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых