LoginSignup
29
22

More than 3 years have passed since last update.

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

Last updated at Posted at 2018-07-30

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/phpは不可)
  2. Composer
  3. COMPOSER_HOMEPATHを通す
    • PATH=$HOME/.composer/vendor/bin:$PATH みたいな行をシェルの設定ファイル(~/.bashrcとか)に書く

PHPStanのインストール

composer global require phpstan/phpstan
  • 既にPsySHなどのPHP-Parserを使ったパッケージがインストール済でnikic/php-parser:3.1.5などが残存してる場合はインストールに失敗しやすいので注意
  • composer global remove psy/psysh nikic/php-parser などで一旦外すとスムーズ
    • そのあとで composer global require psy/psyshのように入れ直す

追記: phpstan-shimは非推奨

PHPStan 0.12.0以降、phpstan/phpstan-shimは更新されなくなるので、この方法でインストールしていた場合は composer global remove phpstan/phpstan-shim; composer global require phpstan/phpstan を実行してください。

プロジェクトの設定

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でもいいので質問してね 

29
22
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
22