混乱してはいけないLaravelの動的プロパティ – PHP8.2で廃止となった編
さあ大変です。PHP 8.2において動的プロパティが廃止(Deprecated)となりました。PHP 9.0ではErrorExceptionが投げられるようです。動的プロパティをたくさん使っているLaravelのプログラムは大丈夫なのでしょうか?
さあ大変です。PHP 8.2において動的プロパティが廃止(Deprecated)となりました。PHP 9.0ではErrorExceptionが投げられるようです。動的プロパティをたくさん使っているLaravelのプログラムは大丈夫なのでしょうか?
今回は、Laravelの動的プロパティの裏側を見てみます。つまり、どうしてインスタンスのプロパティがメソッドのコールとなるのか。
早いものでL10がリリースされてからもう1年が経ちました。個人的な感想ですがL10では正直なところそこまで大きな変更が無かった様に思います。しかし大抵その様な場合は水面下で激しい議論が酌み交わされており次バージョンにてドラスティックな変更がやってくるもの。さてさてL11はどうなるやら、一緒に見ていきましょう!
従来はプログラムから特定のパスにディレクトリやファイルを追加する際、それらのパーミッションの変更にはPHPのchmod()を使用していました。しかし、最近ドキュメントを読み返してみてLaravelらしいやり方を学んだのでまとめます。
前回の記事にてタイムアウトとなった場合に2種類の例外がスローされる事を説明しました。クエリ実行中にタイムオーバーとなった場合は、QueryException。クエリ実行外でタイムオーバーとなり、その後クエリを実行してエラーとなる場合は、自作したTimeoutExceptionです。今回はこれらのエラーをどうキャッチしてハンドリングするのか解説します。
先日、管理サイトにてアラートが発生しました。調査すると、ある検索画面で利用者が重いクエリを連続で発行した事が原因でした。待ち時間が長かった為、不安になり検索ボタンを連打してしまったようです。サーバに負荷を掛ける操作については注意喚起するとして、待ち時間に制限が無いのはよくありません。そこで、検索処理に制限時間を設ける事にしました。今回はそちらの実装にあたって色々学んだことがあるので紹介します。
個人で色々試したいものがある時に最新のPHPが必要となる事が多々あります。そんな時、今まではHomebrewで両方のversionをインストールして環境変数のパスを手作業で切り替えていましたが、正直面倒です。今回はPHPBrewを使ってそんな面倒が解消されるか試してみます。今回の記事は私の作業環境であるmacOSでの話となります、ご承知ください。
前回の記事ではRectorを使ってプロジェクト内の古い記法を書き換える手順を紹介しました。書き換えたい記法が1つの場合は前回の解説で十分だと思いますが、例えば、PHPのアップグレードに合わせて新たに導入された記法をまとめて適用したい、という場合は Set Lists を使うのがオススメです。今回はそちらの手順を紹介します。
前回紹介したmatch式 や Constructor Property Promotion のように新しい記法が導入されることでボイラープレートが駆逐されコードがより簡潔に読みやすくなります。しかし、長年運用されているプロジェクトなどでは書き換え必要な箇所が多く、導入するのに及び腰になってしまいがちです。Rectorを使うことでそんな億劫な作業が一瞬で完了するかもしれませんよ。
前回のmatch式の紹介に続き、PHP8.0で導入されたsyntaxの紹介です。 今回は Constructor Property Promotion について。