「PHP-CS-Fixer」に関する日記

アンパンマンDBとPHP-CS-Fixer

アンパンマンDB(システム)

リストの現行のストリクトクエリのテストを作成。
新記法にする前に、内部処理を変える必要があって、旧記法でも同じ内部処理を使う必要があるので、内部処理を変えても旧記法が通用することを確認するためのテストが必要なのです。

PHP-CS-Fixer(Today I Learned)

PHP-CS-Fixer/PHP-CS-Fixer: A tool to automatically fix PHP Coding Standards issuesには、ドキュメントコメントでもないくせにドキュメントコメントぶっているただのコメントを本当のただのコメントに戻す機能があります。
/** ただのコメント *//* ただのコメント */

しかし、/** @var ADBValueList $adb_value */みたいに、ローカル変数の型を指定しているコメントまで、ただのコメント扱いされてしまいます。
Intelephenseでは、ちゃんとローカル変数のドキュメントコメントも認識してくれるので、PHP-CS-Fixerにぶち壊されると困るのです。

そこで使うのが以下のオプション。

Rule phpdoc_to_comment - PHP Coding Standards Fixer
ドキュメントコメントをただのコメントに戻す処理の制御ができます。
今回の件なら、ignored_tagsオプションにvarを入れれば、@varのドキュメントコメントだけは見逃してくれるようになります。

PHP8.4(Today I Learned)

【PHP8.4】メソッド引数のデフォルトnullがついに禁止される #PHP - Qiita
function foo(int $x = null)みたいな、null許容指定していないのにデフォルト値null入れてたらnull許容(ここでは?int扱い)になるっていう気持ち悪い挙動が今後なくなるみたいです。
で、うちの場合、PHP-CSFixerで@Symfonyの設定を入れていて、これがデフォルト値nullを入れていたら方の左に付いているnull許容指定の?を自動で消しちゃうんですね。
見た目気持ち悪いけど@Symfonyの推奨ならいいかーって思って消されるままにしていたんですが、今後そういうのは通用しなくなっていくので、対応を入れました。
先程の記事にも書いてあるのですが、nullable_type_declaration_for_default_null_valueオプションで、逆に?が足りないところに自動でどんどん付けてくれるようになります。

WPFのコンテキストメニューとポケモンピクロスとPHP-CS-Fixer

WPFのコンテキストメニュー

Sukeruに使ったWPFのコンテキストメニューのことを、プログラミングのページに記載しました。
結論としては「マニュアル読め」ってことなんですが、難しくないですよと言う紹介程度で。

ポケモンピクロス

ポケモンピクロスのページも準備中。
リリースから期間が経ってるし私も完全クリア済みだし、あまり多くは語らず、軽い紹介と自分の記録程度にしようと思います。

PHP-CS-Fixer

で、上記2つの更新をするときにはPHPファイルを触っているわけですが、Visual Studio Code上で編集するようになって、PHP-CS-Fixerで整形するようにしたので、TGWSWebAdminと同じく、.php_csファイルで整形のルールを指定することにしました。
今の.php_csファイルはこんな感じ。
厳しめなSymfonyルールを基本として、配列を省略表記して、PHPDoc関連は若干緩めています。

TGWSWebAdminとプロフィール

TGWSWebAdmin

タスクリストの読み込みまで開発。
と言っても、読み込むデータがないのでまだ張りぼて。インターフェースをどうしようかと思案しながらなので、具体的な動作はまともにできていないのです。

そんなことより、TGWSWebAdminを開発しながらVisual Studio Codeの環境整備。
PHP-CS-Fixerの公式サイトを見ながらコード整形のルールを自分好みに整備しています。おおむねいたれりつくせりなSymforyのルールで、お節介すぎると感じたところは順次Offにしています。
PHP DocBlockerも入れて、ドキュメントコメントも入れやすくしました。
そして何より、PHP IntelliSenseを入れたので、関数の定義を参照できたり、コードの自動補完が利いたり、圧倒的に便利になったのです。
有料ソフトのPhpStormにはきっと遠く及ばないのでしょうが、ここまでやっただけでも、かなり快適になりました。

プロフィールページ

やっぱりどう考えても一覧に出てくる情報量が少な過ぎなのです。ほとんどの質問に対する回答は短く簡潔なのに、それすら削っているから、すごく読みにくいのです。
情報量を削っているのは、「読みに行く」というアクションを取らせて、回答を読んだ時の印象を強めようというのと、アクセス数の統計を取りたいという狙いがあったからなのですが、一言二言の回答まで削ってしまうのは、さすがにやり過ぎというものなのです。

Visual Studio CodeとVPS

Visual Studio Code

PHPの整形は、いろいろある中で、php cs fixer(小文字のほう)がうまく使えました。
PSR-2に従って整形してくれるらしいのですが、命名規則までは直してはくれないようです。
コーディング規則の最終確認にはSideCIを使っているのですが、ここでチェックすると、警告はある程度までは減っても、ある程度は残ってしまうんですね。
SideCIは本当に最終確認で、気軽にここで調整というわけにはいかないので、できるだけ手元でさっと確かめたいのですが、そのあたりの環境はまだ構築できていません。

VPS

マストドンをちょっとやってみたくてVPS始めたんですが、うまくいかなかったので、もう一個やりたかったこと、.NETのWebアプリケーションをLinux上のサーバーで動かすというのに挑戦しています。
今あるサイトをここのサーバーに置き換えるのではなく、新しいことを始めたい、というところです。
もちろん、軌道に乗ればサーバー移転も考えますが。
先日学習していたdotnetコマンドの件は、これの準備段階ということで、とりあえずハローワールドですが成果が出ました。

dotnet

例えば、C#で作っているfunyakのステージデータが正当なものであるかどうかを検証するには、同じC#で作ったプログラムを使うほうが簡単だったり仕様の不一致が防げたりして都合がいいわけです。

まだFTPを入れていなくて、手元で作ったWebアプリケーションを向こうで試せないので、ちょっとFTPも入れておこうと思います。