PHP

PHPと死のvendor PHP案件でvendorを魔改造するバッドノウハウに対抗する

この記事は 闇の魔術に対する防衛術 Advent Calendar 2018 の4日目の記事です。

昨日は @teradonburi さんの Headless CMSとWordPressの囚人 でした。

TL;DR

forkしたリポジトリをcomposer.jsonにrepositories を追加する

愚痴

引き継いだ案件やよく分かってない開発者がvendor以下のライブラリを書き換えてgitに突っ込んできた事って有りませんか?
私は年1,2回あります。composer update とか出来なくて困る。アップデート後コンフリクトすると大変
そんな死んだvendorを解放するための防衛術を教えます。

本題

ライブラリを改変したいときってどういう時でしょうか

  • バグがある
  • 機能が足りない
  • エラるので取りあえず try catch を埋める (←やめて

思いつく限りでよく遭遇するのはこんな感じです。
バグがある場合は素直に該当ライブラリをforkしてプルリクを送りましょう。
機能が足りない場合も、forkしてプルリクするのがいいですが、プロジェクトの方針によって採用されない機能だったり
メンテナンス期間のバージョンには取り入れてもらえない事もあるでしょう。
また、バグ修正もそうですが、ノーメンテリポジトリの場合はマージされることはないでしょう
(そもそもそういうライブラリは採用しない)

そんな時、どうすれば良いか。

  1. 魔改造したライブラリをgithubにアップする
  2. composer.json に repositories を追加する 方法はこちら
  3. repositoriesに書いた方が優先して読み込まれる。同名でも自分で登録した物が利用される
  4. できれば魔改造したライブラリはfork元にアップデートを追従させる

という感じでオレオレライブラリとして公開して対応しましょう!

もちろん、できれば

  • サポート切れのライブラリは使わない(フレームワークとか特に)
  • ノーメンテっぽいライブラリは避ける

ことを先にやった方が良いと思います!

明日は @neutron63zf さんの 投稿です!