イライラ
素の PhpStorm でイラっとくる箇所といえばダントツ、PHPUnit のモックあたりですよね。こう書かないといけないの。
$connector = new SomeMiddlewareProcess();
/** @var MiddlewareInterface|\PHPUnit_Framework_MockObject_MockObject $processor */
$processor = $this->createMock(MiddlewareInterface::class);
$connector->setProcessor($processor);
setProcessor
の引数定義に MiddlewareInterface のタイプヒント付いてて、docコメントがないと MockObject 型だぜ間違ってるYo! って警告にされちゃうやつ。
最近だと assert(... instanceof ...)
でもOKになってますが、これもなぁ... 他人に与えられた値でもないのにアサーションってどうよっていう。
$processor = $this->createMock(MiddlewareInterface::class);
assert($processor instanceof MiddlewareInterface);
$connector->setProcessor($processor);
なんか負けた気がするやつがこれ。テストコードが、それに対応する自動テストなしに高級化していく、という闇の前兆を感じます。
/**
* @return MiddlewareInterface
*/
private function createMiddlewareInterfaceMock()
{
return $this->createMock(MiddlewareInterface::class)
// ->method(...)->will...
;
}
スッキリ
PHP Toolbox を導入します。

設定を確認します。

Open で設定保存場所を開きます。
idea-php-toolbox-json-files をここにダウンロード。
~/Library/Preferences/PhpStorm2017.1$ git clone \
git@github.com:Haehnchen/idea-php-toolbox-json-files.git \
php-toolbox/vendor/php-toolbox
vendor/php-toolbox
に入れたのは、他の提供者がいたときと、自分が手でカスタマイズしたいときのため。
~/Library/Preferences/PhpStorm2017.1
└── php-toolbox
└── vendor
└── php-toolbox
├── behat
├── core
├── doctrine
├── http
├── mockery
├── php-http
├── phpunit <--- これのおかげ
├── psr
├── symfony
├── twig
└── zend
やっぽい!

createMock()
の戻り値が勝手に、型指定 doc コメント付けたみたいになりました。
他にもいろいろおまけ付き!

がんばったら JSON を書くだけでオレオレフレームワークのマジカルな部分に、独自の補完サポートを付けられるかもですよ。