PHP Doesn't Suck Anymore
PHP’s evolution in versions 7 and 8—faster runtime, stronger typing, better tooling and frameworks like Laravel and Symfony—has many developers arguing it’s now a solid, productive choice for web backends and small projects alike. Others counter that deep design quirks, inconsistent standard libraries, UTF‑8 handling, and a legacy of insecure patterns and chaotic ecosystems still make it inferior to alternatives such as Python, JavaScript stacks, or Ruby. Much of the debate centers on trade‑offs between PHP’s famously simple “drop a file on a server and it just runs” model and the demands of security, maintainability, and large‑scale production systems.
Performance & Deployment Model
- Many agree modern PHP (7/8) is “fast enough” for most workloads; database often remains the bottleneck.
- Stateless, per-request model is praised for resilience: crashes are self-healing on next request.
- Some see “drop a .php file and refresh” as uniquely productive; others note similar workflows exist in ASP/ASP.NET and CGI.
- Classic mod_php is criticized as insecure; PHP-FPM and reverse proxy setups are considered the modern norm.
- Event-based/fiber frameworks (Swoole, Octane, etc.) are cited as removing the “one request per worker” limitation.
Simplicity vs. Professionalization
- Strong nostalgia for PHP as the “purest form of web programming”: mix HTML and PHP, no framework, no devops, ideal for small sites and side projects.
- Counterpoint: that “FTP to prod and hack live” style is seen as an operations nightmare at scale and encourages bad habits.
- Some lament that “professional” PHP has become over-engineered, chasing Java-like complexity and heavy frameworks.
Ecosystem, Tooling, and Tutorials
- Composer and the modern framework ecosystem (Laravel, Symfony, etc.) are praised as productive and mature.
- Others describe Packagist as full of stale, niche libraries and consider the wider ecosystem fragile or “graveyard-like.”
- Insecure beginner tutorials (e.g., outdated PHP+MySQL patterns, missing escaping) are highlighted as still common and harmful.
Language Design, Types, and Standard Library
- Modern features (types, better OOP, pattern matching) are appreciated but seen by some as layers on a “rotten core.”
- Inconsistent function naming/parameter order and weak default behaviors (e.g., in_array without strict flag) are recurring complaints and called “landmines.”
- UTF‑8/unicode handling is criticized as still awkward, requiring mbstring and extra care; others argue Unicode is hard everywhere.
- File I/O error handling (e.g., fopen returning false + warnings, race conditions, lack of errno-like details) is a specific point of contention.
Security and Culture
- PHP’s historic “dangerous defaults” (magic globals, lax escaping) and culture of “just make it work” are blamed for its reputation.
- Some trace ongoing design issues to early anti-intellectual / anti-rigor attitudes; others argue the language and community have matured significantly.
- Shared hosting and WordPress keep PHP highly relevant; security remains a concern, especially with legacy code and plugins.
Comparisons to Other Languages
- PHP is contrasted with Python, JavaScript, Java, C#, and others.
- Supporters claim better web performance and practical ergonomics than Python; detractors prefer Python’s libraries and consistency.
- Isomorphic JavaScript (same language client/server) is seen by some as a structural advantage PHP can’t match.