Конфигурация в пакете
Конфигурация в пакете
Хочу попробовать создать и выложить свой первый composer пакет и возник такой вопрос.
Я сделал одну очень удобную штуку, для отображения ататарки пользователя различными способами. У себя в проекте везде это использую так, как очень удобно. Есть только одна проблема, в виджете очень много конфигураций.
У себя я сделал дефолтные данные, такие как мне нужно и не тащу каждый раз кусук конфига при вызове виджета.
Если я выложу этот пакет, то пользователю нужно будет прописывать все необходимые настройки каждый раз, когда нужно будет вызвать виджет, а настроек прилично. Поэтому хотелось бы предусмотреть, что-то вроде дефолтного конфигурационного файла, который каждый сможет править под себя.
Теперь вопрос, как это лучше всего сделать для пакета ?
Я сделал одну очень удобную штуку, для отображения ататарки пользователя различными способами. У себя в проекте везде это использую так, как очень удобно. Есть только одна проблема, в виджете очень много конфигураций.
У себя я сделал дефолтные данные, такие как мне нужно и не тащу каждый раз кусук конфига при вызове виджета.
Если я выложу этот пакет, то пользователю нужно будет прописывать все необходимые настройки каждый раз, когда нужно будет вызвать виджет, а настроек прилично. Поэтому хотелось бы предусмотреть, что-то вроде дефолтного конфигурационного файла, который каждый сможет править под себя.
Теперь вопрос, как это лучше всего сделать для пакета ?
-
- Сообщения: 271
- Зарегистрирован: 2012.11.30, 07:33
Re: Конфигурация в пакете
А почему не сделаете просто значения по-умолчанию, а пользователь уже будет переопределять те что ему нужно и все?
Re: Конфигурация в пакете
Я бы предложил такой ариант. (IMO)
- Пишем в дефолтных значениях универсальные значения, которые подойдут больше всего для всех проектов.
- Дальше каждый будет переопределять свойства виджета так как им угодно. Через DI или же можете предусмотреть конфиг файл типа:
В итоге все будет правится в одном месте и ничего повторять не нужно будет. То есть делает стандартно, и не забывайте про удобное нововедение DI.
П.С. Пока писал, опередили с ответом.
- Пишем в дефолтных значениях универсальные значения, которые подойдут больше всего для всех проектов.
- Дальше каждый будет переопределять свойства виджета так как им угодно. Через DI или же можете предусмотреть конфиг файл типа:
Код: Выделить всё
public function init()
{
parent::init();
// initialize the widget with the configuration loaded from config.php
\Yii::configure($this, require(__DIR__ . '/config.php'));
}
П.С. Пока писал, опередили с ответом.
Последний раз редактировалось vova07 2014.09.26, 11:17, всего редактировалось 1 раз.
Re: Конфигурация в пакете
Там момент в том, что конфигурации могут быть такие:
- модель пользователя
- где хранятся аватарки
- путь к папке
- путь к дефолтному аватару
- путь к дефолтному аватару на основе поля "пол"
...
Переопределять он конечно может, но при каждом вызове нужно будет тащить большой набор различных параметром. Было бы удобно,чтобы 1 раз их написать и тащить только, то что действительно изменяется.
тоесть для каждого проекта они разные. Я думал о таком, чтобы дать возможность создавать файл конфигурации прямо внутри моего пакета, но при обновлении не трогать его, тоесть игнорировать гитом.
а как расшифровывается DI, вообще где про это можно почитать ?
- модель пользователя
- где хранятся аватарки
- путь к папке
- путь к дефолтному аватару
- путь к дефолтному аватару на основе поля "пол"
...
Переопределять он конечно может, но при каждом вызове нужно будет тащить большой набор различных параметром. Было бы удобно,чтобы 1 раз их написать и тащить только, то что действительно изменяется.
тоесть для каждого проекта они разные. Я думал о таком, чтобы дать возможность создавать файл конфигурации прямо внутри моего пакета, но при обновлении не трогать его, тоесть игнорировать гитом.
а как расшифровывается DI, вообще где про это можно почитать ?
Последний раз редактировалось nepster 2014.09.26, 13:10, всего редактировалось 1 раз.
-
- Сообщения: 957
- Зарегистрирован: 2014.05.31, 20:50
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Конфигурация в пакете
Можно компонентом сделать, указав параметры один раз в главном конфигурационном файле.
Re: Конфигурация в пакете
это небольшой виджет, тоесть я думаю нет смысла делать компонентом. Просто много настроек. Если сделать возможность, чтобы пользователи могли свой файл создать конфигруации, это приемлемое решение ?
-
- Сообщения: 64
- Зарегистрирован: 2012.11.19, 08:42
Re: Конфигурация в пакете
По мне проще дефаулт значения, а основные вынести в вызов виджета, и все это дело задокументировать)
-
- Сообщения: 957
- Зарегистрирован: 2014.05.31, 20:50
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Конфигурация в пакете
Ещё один вариант - в виджет добавить свойство пути к файлу с параметрами. Виджет должен хранить в своей папке шаблонный файл и, по умолчанию, настройки будут экспортироваться оттуда (если при вызове виджета не указать конкретный путь). Или вообще выбрасывать ошибку, если путь не указан. В инструкции написать, что app/config - рекомендуемое место для своего файла настроек.
Re: Конфигурация в пакете
Понял, всем большое спасибо. Попробую сотворить.
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: Конфигурация в пакете
nepster писал(а):это небольшой виджет
Ты уверен что нельзя, либо настроек уменьшить, либо виджет усложнить?nepster писал(а):Просто много настроек
И еще, в Yii2 появился DI, теперь очень легко можно настраивать компонент (включая виджеты) своими дефолтными знаениями.
Жду Yii 3!