動的な型と静的な型の長所短所はあるけど、(もっともRubyの松本なんかは動的な型で決まりって言ってるけど)、
動的な型付けでかつ変数の宣言ミスをコンパイラーがチェックしてくれるPerlはかなり理想的だな。
PHPの場合、型が動的なのに加えて、ブロックによるスコープのコントロールが利かないこと、
変数が1種類しかないこと(Perlでいうところの@arrや%hashがなく、$arr/$hash)、
名前空間がないこと(まあ、パッケージ変数の代わりにクラス変数を使うんだけど、パッケージがないので今度はクラスの管理が難しくなる)
これらが組み合わさって、汚いコードを書くことを強制されるというか。ゆえにバグを誘発する。