Конфигурация в пакете

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
nepster
Сообщения: 838
Зарегистрирован: 2013.01.02, 03:35

Конфигурация в пакете

Сообщение nepster »

Хочу попробовать создать и выложить свой первый composer пакет и возник такой вопрос.

Я сделал одну очень удобную штуку, для отображения ататарки пользователя различными способами. У себя в проекте везде это использую так, как очень удобно. Есть только одна проблема, в виджете очень много конфигураций.
У себя я сделал дефолтные данные, такие как мне нужно и не тащу каждый раз кусук конфига при вызове виджета.

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

Теперь вопрос, как это лучше всего сделать для пакета ?
Vespertilio
Сообщения: 271
Зарегистрирован: 2012.11.30, 07:33

Re: Конфигурация в пакете

Сообщение Vespertilio »

А почему не сделаете просто значения по-умолчанию, а пользователь уже будет переопределять те что ему нужно и все?
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Конфигурация в пакете

Сообщение vova07 »

Я бы предложил такой ариант. (IMO)

- Пишем в дефолтных значениях универсальные значения, которые подойдут больше всего для всех проектов.
- Дальше каждый будет переопределять свойства виджета так как им угодно. Через DI или же можете предусмотреть конфиг файл типа:

Код: Выделить всё

public function init()
{
    parent::init();
    // initialize the widget with the configuration loaded from config.php
    \Yii::configure($this, require(__DIR__ . '/config.php'));
}
В итоге все будет правится в одном месте и ничего повторять не нужно будет. То есть делает стандартно, и не забывайте про удобное нововедение DI.

П.С. Пока писал, опередили с ответом.
Последний раз редактировалось vova07 2014.09.26, 11:17, всего редактировалось 1 раз.
nepster
Сообщения: 838
Зарегистрирован: 2013.01.02, 03:35

Re: Конфигурация в пакете

Сообщение nepster »

Там момент в том, что конфигурации могут быть такие:
- модель пользователя
- где хранятся аватарки
- путь к папке
- путь к дефолтному аватару
- путь к дефолтному аватару на основе поля "пол"
...

Переопределять он конечно может, но при каждом вызове нужно будет тащить большой набор различных параметром. Было бы удобно,чтобы 1 раз их написать и тащить только, то что действительно изменяется.

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

а как расшифровывается DI, вообще где про это можно почитать ?
Последний раз редактировалось nepster 2014.09.26, 13:10, всего редактировалось 1 раз.
mickgeek
Сообщения: 957
Зарегистрирован: 2014.05.31, 20:50
Откуда: Санкт-Петербург
Контактная информация:

Re: Конфигурация в пакете

Сообщение mickgeek »

Можно компонентом сделать, указав параметры один раз в главном конфигурационном файле.
nepster
Сообщения: 838
Зарегистрирован: 2013.01.02, 03:35

Re: Конфигурация в пакете

Сообщение nepster »

это небольшой виджет, тоесть я думаю нет смысла делать компонентом. Просто много настроек. Если сделать возможность, чтобы пользователи могли свой файл создать конфигруации, это приемлемое решение ?
Евгений Владимирович
Сообщения: 64
Зарегистрирован: 2012.11.19, 08:42

Re: Конфигурация в пакете

Сообщение Евгений Владимирович »

По мне проще дефаулт значения, а основные вынести в вызов виджета, и все это дело задокументировать)
mickgeek
Сообщения: 957
Зарегистрирован: 2014.05.31, 20:50
Откуда: Санкт-Петербург
Контактная информация:

Re: Конфигурация в пакете

Сообщение mickgeek »

Ещё один вариант - в виджет добавить свойство пути к файлу с параметрами. Виджет должен хранить в своей папке шаблонный файл и, по умолчанию, настройки будут экспортироваться оттуда (если при вызове виджета не указать конкретный путь). Или вообще выбрасывать ошибку, если путь не указан. В инструкции написать, что app/config - рекомендуемое место для своего файла настроек.
nepster
Сообщения: 838
Зарегистрирован: 2013.01.02, 03:35

Re: Конфигурация в пакете

Сообщение nepster »

Понял, всем большое спасибо. Попробую сотворить.
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Конфигурация в пакете

Сообщение slavcodev »

nepster писал(а):это небольшой виджет
nepster писал(а):Просто много настроек
Ты уверен что нельзя, либо настроек уменьшить, либо виджет усложнить? :mrgreen:

И еще, в Yii2 появился DI, теперь очень легко можно настраивать компонент (включая виджеты) своими дефолтными знаениями.
Жду Yii 3!
Ответить