イライラ
素の 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 を書くだけでオレオレフレームワークのマジカルな部分に、独自の補完サポートを付けられるかもですよ。