PHP 【PHPUnit】TestRunner拡張で前処理と後処理を追加 PHPUnit12 / 11 のTestRunnerを拡張して、テスト実行時の全体の前処理と後処理を追加していきます。(制作協力:ChatGPT-4o)※PHPUnitの公式ドキュメントだけでは判りにくかったため、ChatGPTに手伝ってもらいました。が、ハルシネーションとの闘いですよね。。嘘ついたり汚いコード提示してきたり、コーディング規約無視したり。その辺は人間と同じだなあと思ったり。。 2025.06.11 PHP
PHP 【PHPUnit】HTTPテストのTestCaseを作ってみる フレームワークや外部ライブラリ禁止でもPHPUnitはOKというプロジェクト用に、LaravelのようなHTTPテストができるTestCaseクラスを作ってみます。 2025.06.10 PHP
PHP 【PHP】PDOを使ってPaginatorを作ってみる フレームワークや外部ライブラリ禁止のプロジェクトで、Laravelのページネーション paginate(5) のような機能を作ってみるという案件です。 2025.06.07 PHP
PHP 【PHP】動的プロパティをエラーが出ないように扱ってみる PHP8.2.0以降で動的プロパティは非推奨となり、error_reporting(E_ALL) とすると、存在しないクラスプロパティへの値代入は実行されますが、エラー出力されます。意図しないプロパティへの値代入はバグの温床になるので、クラスプロパティは明示的に宣言してくださいとうことでしょう。しかしながら、この動的プロパティを敢えて使いたい場面もあったります。例えば、ModelBaseで取得結果をDTOで返したい場合などは、当然テーブル毎にカラム定義が異なるので、いちいちテーブル毎のDTOを事前に宣言しておくというのは現実的ではありません(いや、やりたくありません)。PDOStatementで fetch したレコードのカラム名をプロパティ名として、動的プロパティとして値を代入したいものです。というわけで、 error_reporting(E_ALL) でもエラーが出ないように動的プロパティを扱っていきます。 2025.06.06 PHP
PHP 【PHP】DateTimeオブジェクトをもっと使いやすくしてみる フレームワークや外部ライブラリ使用禁止のプロジェクトでは、日付計算でCarbonのような超絶便利なものが使えず、PHP組込のDateTimeオブジェクトを使うことになります。これがまた使いにくいので、もう少し使いやすくしてみましょう。 2025.06.06 PHP
PHP 【PHP】CLIでの標準入力マスキング パスワードや暗証番号などの機密情報をターミナルの標準入力でタイプする際に、画面上では見えないように別の文字でマスキングする方法のメモです。(制作協力:ChatGPT-4o) 2025.05.10 PHP
PHP 【PHP】条件判定のベンチマーク PHPの条件判定処理についてベンチマークテストを実施してみました。対象の条件判定処理は、if文、三項演算子、switch文、match式の4種類です。対象のPHPバージョンは、8.2 / 8.3 / 8.4 です。 2025.04.27 PHP
Bash 【PHP】Bash Colorizer の使い方 PHPでBashターミナルへテキストをカラー出力するツール Bash Colorizer の使い方についての解説です。 2025.04.11 BashPHP
PHP 【PHP】phpenvでPHP8.4をインストールする方法 複数バージョンのPHPを管理するツールphpenvですが、2024年10月以降は更新がされずに放置されており、PHP8.4のインストールができない状態です。それに伴い、mise、asdf、vfox 等、他ツールへの乗り換えをする記事を書いていました。ところが、PHPが期待した状態でコンパイルされていない、またはバージョンの適用が不安定等の不都合があり、結局は動作が安定しているphpenvを使い続けたいと思ってしまったわけです。 2025.03.30 PHP