Edited at

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 さんの 投稿です!