Większość hejtu na PHP wynika z kilku rzeczy:
- po pierwsze z tego, że prawie każdy zaczynał swoją przygodę z PHP i pisał w nim potworki na jakie PHP pozwala - potem przesiadał się na inne języki i pamięta z PHP te złe rzeczy
- jak wspomniałeś jest to język dynamicznie typowany, nie ma kompilacji etc i to już niektórym wystarczy
- bardzo duża ilość hejtu to junior-java-developer, co ledwo potrafi CRUD w Springu ogarnąć, ale wydaje mu się, że zjadł wszystkie rozumy - taki typowy Duning-Kruger effect
- i chyba najważniejsze - większość hejtujących pisze raczej o rzeczach z PHP 4/5 i/lub nie zna nowszych wersji PHP
- PHP jako tania technologia ma niski próg wejścia, więc wiele projektów PHP to jest coś co nigdy nie powinno powstać
To co jest prawdą to PHP pozwala pisać chyba najgorszy kod ze znanych mi języków... no może poza JS, ale też poczynając od wersji 7 pozwala też pisać dobry kod. Wiele rzeczy, o których pisałeś nie są "do końca" prawdą. Np. w PHP możesz (ale nie musisz) typować inputy/output funkcji, pola klas etc. Możesz wybrać zarówno w tym typowaniu podejście gdzie typy są zmieniane dynamicznie (czyli np. string "1" może być zamieniony na int 1), ale możesz też wybrać strict_type, gdzie takie rzeczy już powodują wyjątki.
Podobnie będzie z tymi błędami - możesz PHP ustawić tak aby do pewnego momentu ignorował błędy typu brak zmiennej był konwertowany na null etc, ale to jest wybór programisty w poważnych zastosowaniach raczej stosuje się "early fail" jako punkt wyjścia i nikt przy zdrowych zmysłach nie maskuje takich rzeczy. W poważnych projektach stosuje się tak jak we wszystkich innych językach na przykład statyczną analizę kodu, testy, pipeliny CI itp.
Oczywiście PHP nie jest bez wad - np. łatwiej o błąd bo w językach kompilowanych wiele błędów wychwytuje kompilator, a w PHP jak to się żartuje klient ;-) No ale też realnie patrząc jak ktoś dobrze pisze i używa analizy statycznej to praktycznie tak samo jakby używał kompilatora (oczywiście piszę to w zakresie wyłapywania błędów).
Co do projektów to podałeś Wordpress i MediaWiki - tą są przykłady bardzo złego użycia PHP. Oglądając kod WP ma się wrażenie, że to jakiś śmietnik z architekturą w stylu PHP sprzed 15 lat. Zresztą sporo takich potworków w PHP istniej - nawet najpopularniejszy obecnie framework jakim jest Laravel to taka trochę kupa jeśli chodzi o OOP. Obecni PHP pisze się zupełnie inaczej popatrz na projekty typu Symfony, Doctrine, Spryker.
Dzisiejszy PHP ma bardzo dobre (jak na język skryptowy) OOP, stosuje się w nim rzeczy poczynając od Dependency Injection a kończąc na architektura hexagonalna, CQRS, DDD itp. Pracuję w PHP z dużym Ecommerce i często mam styczność z zespołami Java/C#, w wielu firmach mieliśmy wspólne "tech talki" itp - stosujemy dokładnie ten sam zestaw dobrych praktyki i używamy podobnych narzędzi typu szyna danych, chmura, konteneryzacja, systemy kolejkowe itp tid.
Reasumując powiedziałbym, że w PHP da się pisać bardzo zły kod i faktycznie wiele osób taki kod pisze, ale sam język pozwala na pisanie dobrego kodu i ... wiele osób taki kod pisze. Ja sam odbieram PHP jako solidny język programowania i co ważne dynamicznie się rozwijający. Sam pracuję w nim dlatego, że jest mocno wykorzystywanych w ecommerce, a w tym się specjalizuję.
Dlaczego PHP jest popularny? Ostatnio czytałem fajny artykuł, o którym już tu kiedyś pisałem. Popularność zdobywają nie te języki, które są "najlepsze" tylko te, które w odpowiednim czasie dały ludziom to o co prosili, a potem potrafiły się "cywilizować" z czasem. Takimi językami są na przykład PHP, JS czy Java. Nie były to języki poprawne (i w sumie nadal nie są), ale po prostu potrafiły w pewnym czasie zaspokoić pewną potrzebę (w przypadku PHP język do szybkiego tworzenia aplikacji webowych), a potem rozwijać się wraz z potrzebami rynku. Hejterzy szczekają a karawana jedzie dalej. Dokładnie to samo jest na przykład z JS/Javą - co chwilę powstają nowe języki, które niby są lepsze, ale i tak Js/Java trzymają ogromną część rynku w swoich kategoriach i rozwijają się w tempie swoich użytkowników.