kimono
@kimono
Web developer

Как начать работать со своим репозиторием github для yii2?

После написания 2-3 проектов возникает разумный вопрос - как избавиться от копирования/вставки нужных классов хелперов/виджетов/ассетов и т.д. от проекта к проекту и поддерживать их актуальность. Ответ просится сам по себе - через размещение в репозитории.
Как я вижу эту задачу для yii2:
Создаем свой репозиторий в папке vendor, кладем туда нужные файлы, проверяем чтобы все работало, комитим, в других проектах добавляем свой репозиторий в composer.json.
Это верный подход или нет?
Проблемы:
Если, например, структура папок репозитория такая:
vendor/MYREPO/yii2-widgets/Toastr/Toastr.php
То как добиться использования namespace MYREPO\Toastr в файле Toastr.php?
  • Вопрос задан
  • 676 просмотров
Решения вопроса 1
mitaichik
@mitaichik
Тут есть несколько подходов, все зависит от потребностей. Я не буду описывать простые решения, типа тупо require из общей папки, или дописать автолоадер, и т.п.

Главное - в папке vendor мы ничего руками не меняем и ничего там не создаем - ей управляет композер и лездь туда не надо.

Первый варик - для общего кода создаем git-репозиторий (неважно где, хот у себя на компе, хоть на том же github/bitbucket) и тупо подключаем репозиторий. Но это нищебродский вариант.

Второй (если код не приватный) - делаем как все - создаем репозиторий на гитхабе и регим пакет в пакагисте - самый стандартный путь. Отсюда все вытикающие плюсы, например, менеджмент версйи.

Третий - то же самое, но для приватного кода: настраиваем свой композер-сервер (например satis) - получаем тоже самое что composer + github, только приватный вариант.

Следует отметить, что когда вы будете делить на пакеты, то ваш код будет разрабатываться в отрыве от проектов где он используется. То есть не так что вы в своей библиотеке что-то написали, обновили страницу основного проекта - и все применилось - нет. Вы должны будете закомитить, затегировать, запушить, в основном проекте обновить зависимости, и т.д. Поэтому советую писать общий код в абсолютном отрыве от того где он будет юзаться (как фреймворк - его разработчики ж не знают где он будет юзаться). Чтоб проверять изменения советую (если еще не в юзаете) освоить автоматическое тестирование. Нужно будет гораздо лучше продумывать интерфейс вашей либы. Но в целом - это все позитивное движение. Так что вперед и удачи )
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Tem_ka
Ваши хелперы оформите в виде пакета в composer.json. Легко подключать и поддерживать актуальность, независимость от проекта

Если, например, структура папок репозитория такая:
vendor/MYREPO/yii2-widgets/Toastr/Toastr.php
То как добиться использования namespace MYREPO\Toastr в файле Toastr.php?


Свой автолоадер написать. В общем правильно уже подсказали, посмотрите как делают библиотеки
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы