2019/10/24

自分の作ったLaravel用パッケージが、Laravel6で使用したらエラーが出たという報告を受けた。

内容的に、普通にパッケージの対応バージョン上げたらいいのかな〜って思ってあげると、 次はServiceProviderで「str_contains」が見つからない、というエラーが出てた。

laravel6で動かない · Issue #6 · howyi/conv-laravel

こういうコード。

コマンド取り込み時にLaravelかLumenか判定する際に使っていた。

return str_contains($this->app->version(), 'Lumen');

で、調べてみると、str_containsは Str::contains に変わったらしい。

なので以下のようにした。

use Illuminate\\Support\\Str;
return Str::contains($this->app->version(), 'Lumen');

これで一件落着と思ったけど、よく考えると既存の5系を使ってる場合、バージョンアップしたら急に壊れてしまうよな…と思って、悩んだ挙げ句以下の形にした。

return (strpos($this->app->version(),'Lumen') !== false);

とてもつらい感じに。

Laravel、アプリ側だと追従すればいいという話ではあるけど、複数バージョンにまたがって使用可能なライブラリとかは大変そう。どうやってるんだろう。