Skip to content
article

PHP in 2026 is actually good. Here are my receipts.

11 people, 31 client apps, and one language everyone keeps telling me is dead

Ayesha Siddiqui@laravel_ayesha

September 16, 2026 · 4 min read

Every few weeks somebody in a thread here tells me PHP is dead. I run an 11 person agency in Karachi. This month PHP paid 11 salaries, our office rent, two laptops and a very expensive coffee machine. If this is death, it is a well paid one.

But "it pays" is not an argument about quality, so here are actual receipts. And at the end, what is still bad, because I am not a fan club.

Receipt 1: the language grew up

PHP 7 was roughly twice as fast as 5.6 on real apps, and every 8.x release since added things I actually use daily: enums, readonly properties and classes, match, union and intersection types, never, DNF types, typed class constants in 8.3, and in 8.4 property hooks and asymmetric visibility. This is modern PHP:

final class Invoice
{
    public private(set) InvoiceStatus $status = InvoiceStatus::Draft;

    public string $number {
        set(string $value) {
            if (! preg_match('/^INV-\d{6}$/', $value)) {
                throw new InvalidArgumentException("bad invoice number: $value");
            }
            $this->number = $value;
        }
    }

    public function __construct(
        string $number,
        public readonly Money $total,
    ) {
        $this->number = $number;
    }

    public function send(): void
    {
        $this->status = $this->status === InvoiceStatus::Draft
            ? InvoiceStatus::Sent
            : throw new LogicException('already sent');
    }
}

Anyone can read $invoice->status, only the class can change it. The invoice number validates itself on every write. No getters and setters boilerplate. If this is your first PHP since 2012, I understand the confusion.

Receipt 2: the tooling

  • Composer still the most boring, reliable package manager I use, in any language.
  • PHPStan / Larastan at level 8-9 catches most of what a compiler would.
  • Pest for tests, Pint for formatting, Rector to upgrade old code automatically. We moved a client from 7.4 to 8.3 with Rector doing 80% of the work.
  • Herd for local setup. New junior, laptop ready in 15 minutes.

Receipt 3: performance that is enough

One client API on a 2 vCPU VPS: about 350 requests per second on a cached endpoint with php-fpm, about 1,100 with Octane on FrankenPHP. Your numbers will be different, measure your own. My point is not that PHP is the fastest. My point is that for a business app the database and the third party APIs are slower than the language, every single time.

Receipt 4: the ecosystem

Laravel gives you queues, scheduling, Horizon, websockets with Reverb, auth, mail, all first party and documented. Symfony components underneath half the PHP world. WordPress runs a huge share of all websites, like it or not. Whatever a client asks for, there is a maintained package and someone in Lahore or Lagos who has done it before.

Receipt 5: hiring and money

In Pakistan, India, Indonesia, Brazil, Nigeria, PHP jobs and PHP freelance work are everywhere. My juniors are productive in three weeks. The deploy story is still the easiest: shared hosting for the tiny clients, a VPS with Forge-style scripts for the medium ones, containers for the big ones.

Nuno Maduro (he made Pest and Pint) has a video called "PHP in 2026 is so good..". I agree with the title and with most of the tour:

What is still bad (I promised)

  • The standard library naming. strpos($haystack, $needle) but array_search($needle, $haystack). str_replace vs strtolower. It will never be fixed and we all have the docs open forever.
  • Arrays are lists and hash maps at the same time. Powerful, also the source of half our weird bugs.
  • No native generics. PHPStan docblock generics work, but it is a workaround.
  • Async is fragmented. Fibers exist since 8.1, but ReactPHP, Amp, Swoole all do it differently.
  • Google still ranks tutorials from 2011 with mysql_query and SQL injection built in. Juniors find those first.

So no, PHP is not cool. It is something better for a business: boring, cheap to host, easy to hire for, and fast enough. Bas. Now go ahead and comment "PHP is dead". I have my 😐 ready.

Written by

Ayesha Siddiqui

Laravel dev turned agency owner, Karachi. 11 people, mostly PHP, all of them better than me now. PHP 8 is good and I will die on this hill. Founder of PHP Still Pays 🐘

Get the best of #php_still_pays weekly

One email each Monday with the most useful posts. No spam; unsubscribe in one click.

Comments

36

Sign in to join the conversation.

Sign in to comment
Bayu Setiawan@bayu_laravel#2 in PHP Still Pays
Receipts accepted mbak 🙏 PHP pay my cicilan rumah for 8 years. Also the property hooks example is very clean, first time I see it used for validation like this
19 net votes
Mehmet Aydoğan@malloc_mehmet#8 in PHP Still Pays
Language with strpos(haystack, needle) and array_search(needle, haystack) in same standard library is not good. It is consistent in being inconsistent. olmaz böyle şey
15 net votes
Ayesha Siddiqui@laravel_ayesha#1 in PHP Still Pays
it's literally the first point of the 'what is still bad' section, Mehmet. did you read it or scroll straight to the comment box 😐
-2 net votes
Mehmet Aydoğan@malloc_mehmet#8 in PHP Still Pays
I read. You admit it and still say good. This is Stockholm syndrome.
11 net votes
Elif Korkmaz@elif_ships2 rep in PHP Still Pays
hocam you have been writing C for 20 years. if anyone here knows Stockholm syndrome with a language, it is you 🙃
16 net votes
Frank Ostrowski@frank_cpp98#10 in PHP Still Pays
1,100 requests per second on two cores, in 2026, and this is presented as a brag. Regards.
16 net votes
Karthik Subramaniam@karthi_rustacean2 rep in PHP Still Pays
It is a full framework with routing, middleware and serialisation on a cached endpoint. For a business CRUD that is more than enough only. Not everything is a packet processor, Frank.
12 net votes
Frank Ostrowski@frank_cpp98#10 in PHP Still Pays
Everything should be written as if it were. Regards.
9 net votes
Imran Hussain@imran_builds#3 in PHP Still Pays
Leeds checking in. Laravel paid for my kids' nursery, my car and a season ticket I regret. Pint + Pest + Larastan is the best DX I've had in any language, and I write Node too. Proper good post Ayesha.
3 net votes
Ankit Khurana@faang_or_bust5 rep in PHP Still Pays
php devs writing 2000 words to convince themselves. if it was good you wouldnt need receipts lol. cope
-19 net votes
Oluwatobi Adeyemi@tobi_freelance#6 in PHP Still Pays
My brother, she has 11 salaries as receipts. How many salaries do your opinions pay? 😂
3 net votes
Guillaume Mercier@guillaume_rale#10 in PHP Still Pays
Bon. Symfony dev here, so I am contractually obliged to complain: Laravel facades are a crime against dependency injection. That said, everything else in this post is correct. 8.4 is the best PHP ever shipped and the stdlib naming is a crime too. Bref, two crimes, still good.
8 net votes
Ayesha Siddiqui@laravel_ayesha#1 in PHP Still Pays
facades are a crime we commit knowingly and with joy 😄 merci Guillaume
9 net votes
Julien Lefèvre@julien_wp#7 in PHP Still Pays
Tu râles encore ? 😄 Elle a raison, et tu le sais.
8 net votes
Guillaume Mercier@guillaume_rale#10 in PHP Still Pays
Je râle donc je suis. Mais oui, elle a raison.
12 net votes
Ondřej Hrubý@rewrite_it_in_rust2 rep in PHP Still Pays
no generics in 2026. arrays that are maps that are lists. skill issue of the language designers 🦀
17 net votes
Karl Lindqvist@kernel_karl2 rep in PHP Still Pays
Your Rust crates link C libraries that have neither generics nor bounds checking. Including mine. PRs welcome. You have not sent one.
14 net votes
Ondřej Hrubý@rewrite_it_in_rust2 rep in PHP Still Pays
...touché
12 net votes
Caio Nascimento@caio_backend#9 in PHP Still Pays
Ok, I will say it: I make fun of PHP every week in dev_brasil. But my first salary was PHP 5.2 in a Recife agency. The post is honest, the 'what is still bad' part is what convinced me. Respect kkkk
12 net votes
Matheus Barreto@matheus_wp#5 in PHP Still Pays
FINALMENTE kkkkkk caio admitiu em público. print tirado 😎🌴
15 net votes
Caio Nascimento@caio_backend#9 in PHP Still Pays
apaga isso matheus kkkkkkkk
11 net votes
Hamza Butt@hamza_flutter2 rep in PHP Still Pays
Flutter dev but my studio's backend is Laravel, yaar. Two of us, 14 client apps, one cheap VPS. PHP is the most underrated reason Pakistani freelancers eat 😂
9 net votes
Usman Afridi@usman_fiverr1 rep in PHP Still Pays
very good post. WordPress PHP is my rozi. thank you ayesha baji
12 net votes
Ryan Goh@ai_maxi_ryan2 rep in PHP Still Pays
or just let AI write the backend in whatever and stop caring what language it is 🤖🚀 language wars are cope, prompting is the skill
14 net votes
Ayesha Siddiqui@laravel_ayesha#1 in PHP Still Pays
and when the AI writes N+1 queries in 'whatever', who fixes it? 😐
7 net votes
Ryan Goh@ai_maxi_ryan2 rep in PHP Still Pays
another AI lah. relax
10 net votes
Graham Whitfield@greybeard_graham1 rep in PHP Still Pays
Ryan, I have watched four generations of 'you will not need to know the language' come and go. Each time, the people who knew the language cleaned up afterwards. Cheers, G.
15 net votes
Sam Whitaker@segfault_sam4 rep in PHP Still Pays
php is dead source: the 11 people it employs, apparently
14 net votes
José Gregorio Marcano@chamo_coder2 rep in PHP Still Pays
Desde Valencia: PHP y Laravel me pagan en USDT cuando el banco no funciona y se va la luz. Burda de bueno el post. PHP no está muerto, chamo, está trabajando.
15 net votes
Dhruv Thakkar@dhruv_ships1 rep in PHP Still Pays
Our GST billing SaaS is Node now, but v1 was CodeIgniter in 2019 and honestly it was faster to build. ₹3.1L MRR doesn't care about the language, bhai. Customers care that the invoice comes out right.
18 net votes
Mio Kobayashi@mio_rustacean1 rep in PHP Still Pays
rust person, came to troll, left agreeing with 'boring, cheap to host, easy to hire for'. that's the real benchmark tbh 🦀
10 net votes
Faizan Qureshi@faizan_php#4 in PHP Still Pays
Ayesha baji, der se padhi, lekin office mein sab ko bheji. Mehmet sahab ke liye do line: PHP ko murda kehte rahe, hum code likhte rahe, woh compiler se ladte rahe, hum invoice bhejte rahe 🙂
16 net votes
Mehmet Aydoğan@malloc_mehmet#8 in PHP Still Pays
This is better than the PHP.
12 net votes
Faizan Qureshi@faizan_php#4 in PHP Still Pays
Behad shukriya janab, aapse isse bada compliment milna mushkil tha 🙏
5 net votes
John Mark Dela Cruz@jm_delacruz3 rep in PHP Still Pays
bai ayesha, my capstone panel said 'why PHP, its old'. i showed them this post 😭 they said ok. HAHAHA salamat po
14 net votes
Ayesha Siddiqui@laravel_ayesha#1 in PHP Still Pays
jm you defended your thesis with a blog post, I'm so proud 😂 good luck at the defense
9 net votes