PHP

illuminate/databaseでクエリログはいつからデフォルトで取らないようになったのか

Laravel 9.x時点での話 実行済みのクエリログを取得する場合、DB::connection()->enableQueryLog();のようにしてログを有効化し、$queries = DB::getQueryLog();のようにする。 クエリログはデフォルトでは取得しないようになっているので最初にenableQuery…

PHPStanの実行結果をreviewdogとGitHub Actionsを用いてPRにレビューコメントできるようにする

PHPStanというPHPの静的解析ツールがある。 github.com 歴史あるPHPプロダクトにこれを導入する場合、解析レベルを低めに設定したとしても、既存コードで多くのエラーが出ることがある。もちろんそれらのエラーを潰していくことも大事だが、ひとまず小さく導…

PHP-Parser入門した

PHP

最近「PHPのコードをパースしていい感じにしたい」ということがあった。その時にPHP-Parserについて調べたので、使い方などを軽くメモしておく。 PHP-Parserとは このライブラリのこと。 github.com PHPのコードを静的解析して抽象構文木(AST)を生成し、そ…

Livewireをほんの少しだけ触ってみた

昨日、社のとある勉強会でHotwireの話題があがった。僕はそれがどういうものなのかよく分かっていなかったのだが、他の参加者から「PHPでも似たようなやつあったような?」的なことを教えてもらった。どうやらLivewireがそれにあたるものらしい。せっかくな…

PHP5.5で追加されたジェネレータについて調べた

PHP

前にまとめたPHP5系で追加された機能を振り返る記事の続き。今回は、ほぼ知らなかったジェネレータについて調べた。サンプルコードを多めに載せ、まとめていく。 ジェネレータとは ジェネレータとは、イテレータのような反復処理をシンプルに実装できる構文…

PHP5.3で追加された遅延静的束縛(Late Static Bindings)について調べ直した

PHP

前にまとめたPHP5系で追加された機能を振り返る記事の続き。今回は、よく理解していなかった遅延静的束縛について調べ直した。 転送コールと非転送コールとは 遅延静的束縛を理解するために、先にこの2つについてまとめる。 ▼ 転送コールとは self / parent …

PHPのバージョン5.3から5.6までの新機能をおさらいする

PHP

レガシーなPHPコードを触っていると「あれ、このバージョンだとこの機能はまだ使えないのか?」みたいなことがたまにある。私がそれなりにPHPを使うようになったときの最新バージョンが5.6くらいで、それより前の機能はいつ追加されたものなのか曖昧にしか覚…

「短気なプログラマのためのPHPUnitクックブック」を読んだ

少し前に読んだ 2017年にプロが今更PHPを学ぶための本、Webまとめ - BASE開発チームブログ という記事で「短気なプログラマのためのPHPUnitクックブック」が紹介されていた。PHPについて書かれた本は世の中にたくさんあるが、PHPUnitについて書かれた本は結…