Posted at

PHPで開発が捗るリアルタイムエラーチェック

More than 1 year has passed since last update.

Pythonでも型チェックが捗ると噂をきいたのでPHPの環境構築について書きます。ちょっと眠いので簡潔に… もしわからないことがあったら回答するのでコメントで聞いて1


得られる利益

関数名を間違ってることに気付いたり

スクリーンショット 2018-07-31 01.53.12.png

変な型どうしで計算してることに気付いたり

スクリーンショット 2018-07-31 01.54.54.png

うっかり変な値をreturnしようとしたり

スクリーンショット 2018-07-31 02.01.59.png

そんな問題に編集中に気付けるよ。

画面はVimだけど、ほかのエディタでもいいよ。


事前準備


  1. PHP 7.1+


    • macOSなら brew install php とかでもいいです (システムに最初から入ってる/usr/bin/pythonは不可)



  2. Composer




  3. COMPOSER_HOMEPATHを通す



    • PATH=$HOME/.composer/vendor/bin:$PATH みたいな行をシェルの設定ファイル(~/.bashrcとか)に書く




PHPStanのインストール

composer global require phpstan/phpstan-shim


  • 既にPsySHなどのPHP-Parserを使ったパッケージがインストール済でnikic/php-parser:3.1.5などが残存してる場合はインストールに失敗しやすいので注意


  • composer global remove psy/psysh nikic/php-parser などで一旦外すとスムーズ


    • そのあとで composer global require psy/psyshのように入れ直す




プロジェクトの設定

Composerがベースのプロジェクトの場合は、こういうファイルを用意します。


phpstan.neon.dist

parameters:

level: 3
bootstrap: %rootDir%/vendor/autoload.php

詳しくは@HirakuさんのPHPStanで始めるPHPのための静的解析とかを読んでください。


エディタの設定


Vim

ALEで一発です。


Emacs

flycheck-phpstanパッケージを入れてinit.elとかに設定を書いてください。


init.el

(defun my-php-mode-hook ()

"My PHP-mode hook."
(require 'flycheck-phpstan)
(flycheck-mode t)
(flycheck-select-checker 'phpstan))

(add-hook 'php-mode-hook 'my-php-mode-hook)



Visual Studio Code

私は使ったことはないですがvscode-phpstanってやつがあるらしいです。 (未検証)


まとめ

PHPStanの力があれば、ハイエンドなエディタなら割と簡単にIDE(なんとかストーム)に近い領域までいけるぞ。

この記事は手抜きですが、この記事を書いた人間の睡眠不足に報いるつもりのある型は https://www.pixiv.net/fanbox/creator/105589 を購読するEmacsやPHPの記事を書くモチベーションになります。


脚注





  1. こう書いて実際に質問を受けた経験はあまりないのですが、わからないことやトラブルがあったら記事のコメントでもTwitterのDMでもSlackでもいいので質問してね