作った。
https://github.com/nishphp/phpstan-namespace-dependency
https://github.com/nishimura/phpstan-namespace-dependency-sample
DDDでもMVCでも単純なレイヤー構造でもいいけど、各レイヤーごとの依存関係を静的にチェックしたかった。
コードを書き始めて、最初のうちは気を付けるしnewするときは割と意識しているんだけど、しばらく経った後とか急いでいるときとかにreturnやthrowでレイヤーを飛び越えて返却してしまうことがある。
最初はnamespaceを飛び越えてないかだけチェックしようと思ったけど、クラス名までチェックするようにしたらfriendやpackage private的なものも出来るようになってしまった。
コンストラクタやメソッドだけに制限をかけているわけではなくてクラス名単位で制限がかかるからちょっと違うけど。
実際のプロジェクトに適用するところまでいけてないので、使い勝手はまだ不明。