条件付き戻り値型とPHPStan 1.6.0の新機能
PHP8.1完全サポート(PHP8.1リリース後すぐにいくつかが対応されていたことを考えると対応の速さに脱帽です)
スマホゲーム業界におけるPHPの歴史とLaravel Octaneで広がるこれからのPHP
単純にゲームのバックエンドをPHPで作っていたんだなということと、Octaneがなんかすごそうなので。(レベル低くてすみません)
近況PHP / PHP in now a days
非PHPer向けと書いてあるとおりPHP言語の現在地がPHPer以外にもわかりやすくまとめられています。
PHPカンファレンス沖縄開催決定!!
2022年8月27日(土)予定
Wikipedia
コンピュータのソフトウェアの解析手法の一種であり、実行ファイルを実行することなく解析を行うこと。
〜中略〜
静的コード解析はソースコードに対して行われることが多く、少数ながらオブジェクトコードに対して行う場合もある。
→ PHPのコードに対して、プログラムを実行せずに解析を行い、問題点を洗い出すこと
IDEを利用しコーディング中に静的解析を行う
コードを定期的/自動的に静的解析を行う
* git push 時に自動的に解析 → 不適切コードやルール違反を指摘
* コードレビュー観点が明確になる
* 人に指摘されるより気が楽 ← 重要
<補足:PSRとは>
PHP-FIG が策定しているPHPの標準規約集。
規約は各ルールがほぼ独立しており、好きな規約のみを選んで採用することができる。
https://www.php-fig.org/psr/
PSR-1 や PSR-2、PSR-12 はコーディング規約に関するものであるため、取り入れている静的解析ツールも多い
※ 現在、PSR-2 は非推奨
PHP MD(PHP Mess Detector)とは
実行例
[root@vg110 core]# vendor/phpmd/phpmd/src/bin/phpmd test.php text codesize,controversial,design,naming,unusedcode
/usr/local/vanguardDev/vanguard/vg-back/core/test.php:5 CamelCaseMethodName The method test_function is not named in camelCase.
/usr/local/vanguardDev/vanguard/vg-back/core/test.php:5 CamelCaseParameterName The parameter $param_string is not named in camelCase.
/usr/local/vanguardDev/vanguard/vg-back/core/test.php:5 CamelCaseVariableName The variable $param_string is not named in camelCase.
PHP CS(PHP_CodeSniffer)とは
phpcbf
も付属している。実行例
$ phpcs /path/to/code/myfile.php
FILE: /path/to/code/myfile.php
--------------------------------------------------------------------------------
FOUND 5 ERROR(S) AND 1 WARNING(S) AFFECTING 5 LINE(S)
--------------------------------------------------------------------------------
2 | ERROR | Missing file doc comment
20 | ERROR | PHP keywords must be lowercase; expected "false" but found
| | "FALSE"
47 | ERROR | Line not indented correctly; expected 4 spaces but found 1
47 | WARNING | Equals sign not aligned with surrounding assignments
51 | ERROR | Missing function doc comment
88 | ERROR | Line not indented correctly; expected 9 spaces but found 6
--------------------------------------------------------------------------------
コーディング規約の指定
# インストールされているコーディング規約を確認
$ phpcs -i
The installed coding standards are MySource, PEAR, PSR1, PSR12, PSR2, Squiz and Zend
# コーディング規約を指定して実行(デフォルトはPEAR)
$ phpcs --standard=PSR12 /path/to/code/myfile.inc
# デフォルトのコーディング規約を変更
$ phpcs --config-set default_standard PSR12
規約のカスタマイズ
<?xml version="1.0"?>
<ruleset name="Custom Standard">
<rule ref="PSR12">
<!-- "PSR12" の中で除外するルール -->
<exclude name="Generic.Files.LineLength"/>
</rule>
<!-- 追加するルール -->
<rule ref="PEAR.WhiteSpace.ObjectOperatorIndent"/>
<!-- 除外するファイル・ディレクトリ -->
<exclude-pattern>node_modules/</exclude-pattern>
</ruleset>
GitHub スター数
composer や Dockerから利用可能なため比較的導入は簡単
解析の厳密さはオプションで指定可能
備考
https://pleiades.io/help/phpstorm/code-inspection.html
https://www.jetbrains.com/ja-jp/phpstorm/features/php_code_editor.html
PHPの現場(46. PHP と型と静的解析ツール(sji_ch / tadsan))
https://php-genba.shin1x1.com/46
PHPの静的解析いろいろ
https://qiita.com/segawa/items/57ad70eef922a9cd4978
level=0 から始める PHPStan(Larastan) 導入ガイド
https://blog.shin1x1.com/entry/getting-stated-with-phpstan