Композитор Как создать выбираемый пакетPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Композитор Как создать выбираемый пакет

Сообщение Anonymous »

ВВЕДЕНИЕ
Я создал небольшой пакет, который содержит valueObject Тип объектов для измерений. ValueObject ), который имеет два свойства:
value - type float , и Unit SeamurementUnit , который является Интерфейс. < /p>
Он служит мне во многих проектах для подразделений, которые обрабатываются слишком подробно в проекте, чтобы быть простым типом.
Например: у меня есть проект, в котором я Работайте подробно с блоком длины, поэтому я создал классы длины, особенно для этого, какая длина наследует от измерения иунтулэвэобакт . В классе есть поле $ unit type longuunit , которое представляет собой enum реализующий измерение measurementunit . Кроме того, для каждой единицы так называемый преобразователь также создается именем LengthConverter , целью которого является преобразование блока для заданного количества.
В целом, Все это сводится к тому факту, что я могу создать этот вид кода: < /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>
и т. Д. Большое число, и в большинстве проектов мне просто не нужны все из них, и иногда случается, что, например, мне нужны только классы, связанные с длиной 
, но когда я загружаю (чтобы быть более конкретным, по Это я имею в виду установку и «тратить» дисковую память) Весь пакет я получаю 50x больше, чем мне нужно. < /p>
В принципе это не большая проблема, потому что, как правило, есть 3 файла для 1 объекта: единица, valueObject, преобразователь и эти файлы действительно легкие, так что все в нескольких килобитах. Это может быть исключено во время установки, и я не имею в виду создание отдельных проектов.

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

"require": {
"my_units_package": "^1.0''
}
< /code>
Но таким образом я мог добавить тег, который указывает, что загружать или что не загружать. Я знаю, что существует такое дополнительное 
, в котором я мог бы указать, например:

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

"extra": {
"except": ["Power", "Volume"]
}
или назовите тег «только» и передайте необходимые объекты. после /во время различных действий, хотя я не знаю, как они работают, с одного. /> Что, если мой проект сказал "только нагрузку Длина ", но я использовал еще один, в котором говорилось" только «Загрузите питание». Тип? столкнулся с такими проблемами и мог поделиться своими опыт/знание. Спасибо < /p>
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 МБ). < /p>
и с каждой дополнительной объектом размером будет расти на 5 МБ, не на несколько килобит. Справочник поставщиков в них независимо от того, загружаю ли я 2 объекта или 50. Разделение моей посылки на 50 пакетов означает, что у меня будет 50 проектов, в которых каждый будет иметь свой собственный 1x -поставщик, 1x composer.json, 1x composer.lock.
Редактировать 2
давайте рассмотрим только 2 объекта, например: < /p>

[*] Длина < /li>
Money < /li>
< /ul>
Итак, я, безусловно, у меня есть проекты: < /p>

EntiesProject
[*] project1_thatuseenties
[*] project2_thatuseEnties
/> projectn_thatuseenties < /li>
< /ul>
Если я разделяю EntiesProject на 2: < /p>

LenghtvalueObjectProject < /li>
MoneyValueObjectProject < /li>
< /ul>
каждый ProjectX_THATUSEEDIES , который не нуждается в одном из них
, будет меньше на 3 класса, например: MoneyUnit , MoneyConverter, Money`
Но
Поскольку EntiesProject теперь разделен на 2 проекта, каждый должен иметь свой собственный composer.json , composer.lock и Поставщик. Но мне нужна потеря 5 МБ, потому что я создал 1 дополнительный проект, который имеет 1 каталог поставщиков, который имеет размер 5 МБ.


Подробнее здесь: https://stackoverflow.com/questions/794 ... le-package
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»