Я создал небольшой пакет, который содержит valueObject Тип объектов для измерений. ValueObject ), который имеет два свойства:
value - type float , и Unit MeasurementUnit , который является интерфейсом.
it служит мне во многих проектах для подразделений, которые обрабатываются слишком подробно в проекте, чтобы они были простым типом. Классы особенно для этого, которые Lenght наследуют от измерения инит -энтуофекта . В классе есть поле $ unit type longuunit , которое представляет собой enum реализующий измерение measurementunit . Кроме того, для каждой единицы так называемый преобразователь также создается с именем LenghtConverter , целью которого является преобразование блока для заданного количества.
В целом, Все это сводится к тому факту, что я могу создать этот вид кода: < /p>
Код: Выделить всё
$length = new Length(22, LengthUnit::Miles);
$lenght2 = LengthConverter::toKilometers($length);
$lenght->isEqual($lenght2); //true
$lenght2->value // 35.405568;
$lenght2->toMiles()->value; //22
$lenght2->toMiles()->unit; // Enum: LenghtUnit::Miles;
< /code>
и т. Д. Большое число, и в большинстве проектов мне просто не нужны все из них, и иногда случается, что, например, мне нужны только классы, связанные с проведением Однако мне было интересно, есть ли опция Композитор, который позволил бы мне разделить один пакет на более мелкие сегменты, которые можно исключить во время установки, и я не имею в виду создание отдельных проектов. p>
Код: Выделить всё
"require": {
"my_units_package": "^1.0''
}
< /code>
Но таким образом я мог добавить тег, который указывает, что загружать или что не загружать. Я знаю, что существует такое дополнительное Код: Выделить всё
"extra": {
"except": ["Power", "Volume"]
}
edit < /h3>
, чтобы лучше понять, почему я не хочу разделять каждую сущность на отдельный пакет. < /P>
В настоящее время у меня есть 50 объектов в 1 пакете. В дополнение к классам, необходимым для обработки этих сущностей, у меня есть 1x каталог поставщиков, +1 composer.json, +1 Composer.lock. < /P>
Справочник поставщика занимает 5 МБ дискового пространства. Вместе с моими 50 объектами все это занимает менее 6 МБ. +1 composer.json, +1 composer.lock
Размер каталога поставщиков будет неизменным, поскольку каждый пакет будет использовать точно такой же набор библиотек - 5 МБ. < /P>
Итак В общей сложности мой 1 проект, который составлял 6 МБ, станет 50 проектами с общим размером 250 МБ (50 х 5 МБ). на несколько килобайт. Я загружаю 2 объекта или 50. Разделение моей посылки на 50 пакетов означает, что у меня будет 50 проектов, в которых каждый будет иметь свой собственный 1x -поставщик, 1x composer.json, 1x composer.lock.
Редактировать 2
давайте рассмотрим только 2 Entries, например: < /p>
- lenght < /li>
Money < / / li>
< /ul>
Так что у меня есть проекты: < /p>
EntiesProject < /li>
project1_thatuseEnties < /li>
project2_thatuseenties < /li>
.... - projectn_thatuseenties < /li>
> < /ul>
Если я разделяю EntiesProject на 2: < /p>
LenghtvalueObjectProject < /li>
MoneyValueObjectProject
будет меньше по 3 классам, например: MoneyUnit , MoneyConverter, Money`
Но
, поскольку EntiesProject теперь разделен на 2 проекта, каждый должен иметь свой собственный composer.json , Composer.lock и поставщик. Используйте его. Но мне нужна потеря 5 МБ, потому что я создал 1 дополнительный проект, который имеет 1 каталог поставщиков, который имеет размер 5 МБ.
Подробнее здесь: https://stackoverflow.com/questions/794 ... le-package
Мобильная версия