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