Laravel職人
投稿(20)
LaravelはTailwindを推してるので覚えるしかないな
https://blog.tailwindcss.com/tailwindcss-v2
唐突にLaravel Sailなんて登場してる…。
Changes in preparation for Laravel Sail https://github.com/laravel/dusk/releases/tag/v6.8.1
TwitterでBreezeと一緒に書かれてたけど。 https://twitter.com/taylorotwell/status/1324843214185050112
使い道がなかったのでLaravel関連の記事を書くリンク集やブックマークとして使う。
何度か書いてるけどここにも残す。
Laravel初心者の開発環境はphp artisan serve
とSQLiteから始めればいい。
これだけでデータベースを使ったLaravelの基本機能は全部使える。
メリット:PHPさえあれば動く。
デメリット:高度な機能は使えない。Laravel使えてるつもりの人でも使えてないので気にしなくていい。
テストではインメモリSQLite使うのでSQLiteに慣れておくのもいい。
SQLiteはMySQLと違って若干の癖がある。
特にマイグレーションの書き方に気を付けるようになる。
基本的にはPSR-2 + PHPDoc部分の独自規約程度だけど
実際は他にも色々。クラスのインポートは長さ順とか。
use Illuminate\Foundation\Mix;
...
use Illuminate\Contracts\Broadcasting\Factory as BroadcastFactory;
PhpStormならOptimize Importsで同じようにできるのでどこかでは使われてるルールなんだろう。
これが見やすいか?と考えると別に見やすくないので自分ではあまり使わない。機械的にフォーマットするならこういうルールが必要なんだろうけど。
自動化するならStyleCIでできるけどLaravelだと厳しいのでPSR-2に合わせてる。
重要なこと
この規約はLaravel公式内で適用される規約であってLaravel使って何か作るユーザーが従う必要はない。 PSR-2さえ無視してもいい。さすがに今時PSR-2無視してたら他人が読めないけど。
個人的な落とし所。
- PhpStormのLaravelプリセットで自動フォーマット。
- StyleCIはPSR-2
他人のプロジェクトなら合わせるけど一目見ただけで分かるほどひどいコードで規約も何もないような状態なら全部フォーマットし直す。 Laravel使ってるのにarray()使ってるような人は本当に実在する。array()なんてもはやフォーマットするだけで問答無用で[]に変換される。 こんなレベルに合わせるのは不可能なので容赦なくフォーマット。
Laravel Server Push Middleware
動作テストも兼ねてLaravelネタを書いていく。 ここはずっと残すわけでないのであくまでも他で書いたことの転載。
他人のcomposerパッケージを少し修正して使いたい場合、GitHubでフォークしてcomposer.jsonで設定すれば使える。 https://getcomposer.org/doc/05-repositories.md#vcs
一時的ならこれでいいけど長く使って使用プロジェクトも増えた場合は段々面倒になる。 update時の動作見てるといちいちGitHubまで見に行ってるような…。
オリジナルに戻せないほど使ってたらもう別パッケージとして自分の管理下に置くのがいい。
最近作ってたLaravel Server Push Middlewareもそんな感じで。 中身は作り直してるけど。
- 流石にもうElixirがデフォルトはないのでLaravel Mixがデフォ。
- configファイルはそのまま使えるようにしたけどMixで使うだけならconfigファイルの公開は不要。
Discordへの通知付けた頃だと思うけど本番でもdebugbarが表示されていた。当然そんな変なミスするわけないのでなんらかのバグに遭遇していた。
最初は5.8以降env周りの修正してるLaravelのバグかと思ったけど違った。他のパッケージにenv()が存在してそっちが使われていて壊れた。完全に動かないならすぐ分かるけど同じ目的の微妙な仕様違いなのでこれは気付けない。
APP_DEBUG=false
とREDIS_PASSWORD=null
が変だったけどLaravel独自実装の部分を見ればなるほど…。
env
これを使わなかったらfalseでもtrue扱い。nullはstring。
他のenv()をインストールしないように変更して解決。
これなら他のプロジェクトでも発生しそうだけどDiscord botはLaravelそのままではなく小規模に使って.envの項目も少なくfalseもnullもないので影響はなかった。illuminate/supportとしてインストールした場合はLaravelのenv()が使われてたけど名前か何かで順番は決まってるだろうからただの偶然。
その後
5.9で Illuminate\Support\Env が追加される。というか自分が追加した。5.8でもいいはずだけど5.9行きになった。これで他にenv()が存在しても回避手段は用意された。env()を非推奨にすると全configファイルの変更が必要で影響が大きいのでそこまではしない。5年以上使って今回初めて気付いたくらいなので遭遇頻度は低い。5.9までに他の人が非推奨にするかもしれないけど。
更新情報はここに直接書いたほうが良さそう。もう大きな更新は予定してないけど。
募集の表示方法
同じページで複数のページネーション使うと正しく動作しないので一定期間に区切って全件表示するつもりだったけど$pageName指定するだけで解決したので普通の表示に戻した。
->paginate(10, ['*'], 'post');
全件表示はLaraJobsも参考にしたけど。ここは外部へのリンクしかない。募集したい側に必要な情報はこれでいいんだよ。検索もLocationとRemoteしかない。
https://larajobs.com/
Markdown
これ書いて気付いたけどIlluminate\Mail\Markdown::parse(e())
では期待した表示にならないのでParsedownを直接使うように変更した。
$parsedown = (new Parsedown)->setSafeMode(true);
return new HtmlString($parsedown->text($text));
<script>alert('xss')</script>
画像のフォント
サブセット化済NotoSansフォントに全角の数字が含まれてなかったので半角に変換して使用。
テスト用の募集。
募集するだけでもGitHubアカウントでのログインは必須です。
連絡方法
連絡先を書かないと連絡のしようがありません。