Hi internals,
I’m a developer who uses both Java and PHP regularly. I’m writing
because I care about PHP’s future.
PHP’s strength has always been simplicity and pragmatism. But since
PHP 7 and especially PHP 8, we’ve been adding “enterprise features”
(typed properties, attributes, property hooks) that make PHP more like
Java – without achieving Java’s type safety or ecosystem.
I believe PHP should refocus on what made it great. Here are four
pragmatic directions:
- Stop Chasing Java
Every “enterprise feature” pushes developers like me toward Java. Not
because Java is better, but because if I need enterprise complexity
anyway, I’d rather use a language designed for it.
PHP cannot beat Java at its own game. But it can beat Java where it
matters: rapid prototyping, simple deployment, web-native development,
low learning curve.
Please keep PHP simple. Keep it pragmatic.
- Add Practical Array Helpers
PHP is a web language – 90% of what we do is manipulate arrays. Yet
basic operations are still verbose:
// Current
$names = array_values(array_filter($users, fn($u) => $u->active));
$first = count($names) > 0 ? $names[0] : null;
// Proposed
$names = array_pluck($users, 'name');
$names = array_where($users, fn($u) => $u->active);
$first = array_first($users);
$grouped = array_group_by($users, 'role');
$compact = array_compact($data);
These helpers would make everyday code cleaner without adding
complexity.
1. Improve Performance
Performance has always been a strength. Keep optimizing:
- JIT for real-world web workloads
- Reduce memory allocation in array operations
- Make OpCache smarter
1. Provide Built-in Concurrency (Without Complexity)
Concurrency is the biggest missing piece. But instead of complex
async/await or coroutines, consider a simple worker management API:
php
$server = new WorkerServer();
$server->onWorkerStart(fn() => loadApp());
$server->onRequest(fn($req) => handle($req));
$server->start(4);
This would:
- Run standalone: `php server.php` – no nginx, no PHP-FPM
- Keep process isolation (each worker is separate)
- Allow resource initialization once per worker
- Give developers control without new concepts
Why not just use FrankenPHP? FrankenPHP is excellent, but requires an
additional binary and new deployment workflow. Many developers just
want a simple, built-in way to run their app without configuring two
services.
---
Why This Matters
PHP's competitors are winning on concurrency (Node.js, Go) and syntax
(Python). PHP's advantages – simplicity, web-native deployment, low
learning curve – are being eroded.
I don't want to leave PHP. I want PHP to stay great. I want to keep
choosing PHP for years to come.
Thank you for your time and for maintaining PHP. I'm happy to provide
more examples or participate in discussions.
Best regards,
[qinhao]