PHP itself makes it impossible to design good code. I worked with PHP about 15 years ago, left for other platforms but occasionally had to deal with PHP, and since the last year I couch a team of PHP developers, so it&#x27;s part of my daily life understanding the language and it&#x27;s quirks. My honest opinion is that PHP didn&#x27;t change at all over the years. All the same bad smells are there, but not at the same places. The best description I&#x27;ve seen for this is in that old &quot;fractal of bad design&quot; post:<p>&gt; &quot;PHP is a community of amateurs. Very few people designing it, working on it, or writing code in it seem to know what they’re doing. Those who do grow a clue tend to drift away to other platforms, reducing the average competence of the whole. This, right here, is the biggest problem with PHP: it is absolutely the blind leading the blind.&quot;<p>This is so true it hurts, and unfortunately if you think &quot;it&#x27;s not like that, every platform has goods and bads, php works for me, yadda yadda yadda&quot; you&#x27;re in the amateur group. You need to work with other platforms for real to understand this. It&#x27;s not &quot;every platform has issues&quot;, it&#x27;s more like &quot;every platform has issues, and then there is php, in a different category with much deeper problems&quot;.<p>This is not about preferences or tastes either. It&#x27;s just about looking around and seeing how common problems have already been solved. PHP7 has good exceptions, yay! Except they should have been there for 20 years. It was already a <i>very solid concept</i> back when PHP 1.0 was released. ES3 implemented exceptions correctly in 99 for god&#x27;s sake. Every other language did too, PHP is the only kid in the block that took 20 years to understand what exceptions are supposed to mean in the language.<p>I could point other small things like the new DateTime API being a joke, mysqli is still supported and still converts typed data to strings, terrible encoding support, pure byte strings instead of unicode strings, inconsistencies in implementations between OSs, the compiler still acting differently depending on php.ini settings, but in the end, it all boils down to bad design.<p>Facebook&#x27;s Hack fixes the PHP language for real in strict mode, and that is the work of real engineers thinking about stuff. PHP7 is still the same old people trying to get around without looking at proven solutions anywhere else.<p>And that&#x27;s why you can&#x27;t design good code with PHP7. It&#x27;s like trying to design a good house made of turd. Doesn&#x27;t matter how much you design it, in the end it will still smell terrible.