Перейти к содержанию
Официальный форум поддержки Simpla

pikusov

Пользователь
  • Публикаций

    883
  • Зарегистрирован

  • Посещение

  • Победитель дней

    7

2 Подписчика

Информация о pikusov

  • Звание
    Автор Simpla CMS

Контактная информация

Информация о вас

  • Фриланс
    Пользователь
  • Версия CMS
    2.x
  • Откуда
    http://c.com

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

  1. http://www.smarty.net/docs/en/advanced.features.template.inheritance.tpl {block 'footer'} Этот блок переопределен полностью {/block} {block 'pagination' prepend} Этот текст добавится перед блоком {/block} {block 'categories' append} Этот текст добавится после блока {/block}
  2. Вам не нужно знать кого наследовать, вы наследуете класс "class MyModule1 extends MyModule1\Products" а не "class MyModule1 extends Products". Симпла в итоге сама составит цепочку наследований class MyModule2 extends class MyModule1 extends Products Если нужен join - этот пример я привел первым. Ну или, в крайнем случае, вы можете вообще весь метод переопределить. В любом случае никакой "другой" модульностью вы не сможете сделать гибче чем предлагаю я.
  3. Еще один из возможных вариантов: 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::$
  4. Он не решает указанной проблемы, вместо этого беспощадно усложняет архитектуру. Наследование же оставляет код симплы таким же простым как и раньше, при этом дает возможность изменить абсолютно любой код, а не только тот, который заранее спроектирован под возможность изменения
  5. Во-первых в 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; } }
  6. Если автор модуля будет культурным человеком, то он просто вызовет parent::get_xx, изменит то что ему нужно и выдаст результат дальше
  7. Но автор модуля не может знать на чистую систему его поставят или поверх других модулей
  8. Всё равно не очень понятно - "Он берет нужный файл, вносит в него нужные правки и сохраняет в заданную директорию". А если другой модуль уже внес туда правки?
  9. Проблема в какой последовательности подгружать разные модули, расширяющие один и тот же код
  10. А как у них решается аналогичная проблема?
  11. Модуль это просто класс, который наследует стандартный класс симплы. Как его "подхватывать", точнее в каком порядке подхватывать - в этом и сложность. На данный момент Симпла просто смотрит в папку /extensions/ и наследует стандартные классы теми, что нашлись в папке. Проблема последовательности может возникнуть когда несколько разных модулей переопределяют или дополняют один и тот же метод класса.
  12. Если хранить в базе - значит данные о модулях брать из базы через class Database? Но мы не можем создать класс Database, пока не проверим не унаследован ли он каким-то модулем, возможно даже и не одним. А чтобы это узнать, нужно сначала загрузить все модули, при чем в определенном порядке. Проблема курицы и яйца. Еще на счет порядка загрузки модулей - кто вообще его должен устанавливать? Стоит ли администратору давать такие права? Пока склоняюсь к тому, что это дело программиста и класть модули в папку /extensions, а загрузку сделать через /extensions_loader.php, в котором будет список inclu
  13. Например как настраивать порядок загрузки модулей и где этот порядок хранить
  14. Пока не удается обойти некоторые сложности с модульностью, как только получится - выйдет бета
×
×
  • Создать...