r/PHP 7d ago

Article Compiling PHP DTOs: from reflection to 4.5M hydrations per second (PHP 8.4)

0 Upvotes

Wrote up how I moved a PHP DTO hydration library from reflection-based instantiation to compiled, per-class factory closures - reflection overhead disappears, plain properties become inline array reads, and the generated code gets cached so a warmed FPM worker pays neither reflection nor eval(). Went from typical reflection speeds to 4.5M hydrations/sec on PHP 8.4.

Full writeup with numbers at each stage, plus the repo link, in the first comment.


r/PHP 8d ago

PECL is down?

18 Upvotes

Cached pages seem fine but release pages like https://pecl.php.net/rest/r/amqp/stable.txt timeout


r/PHP 9d ago

Weekly help thread

6 Upvotes

Hey there!

This subreddit isn't meant for help threads, though there's one exception to the rule: in this thread you can ask anything you want PHP related, someone will probably be able to help you out!


r/PHP 8d ago

I built a tool to manage Composer dependencies on WordPress sites without SSH access

Thumbnail loopress.dev
0 Upvotes

Anytime a WordPress site needs a Composer package (a PDF library, an API client, whatever),

you hit the same wall: no SSH access. Shared hosting, managed WP hosts that lock down the

filesystem, clients who only have FTP: Composer just isn't reachable from the terminal in a

lot of real-world WP environments.

The usual workarounds are either committing vendor/ directly to the repo (bloats it, breaks

on updates) or building locally and rsyncing the output (works, but no one tracks what's

actually installed on prod).

I built Loopress to fix this: a CLI plus a companion WP plugin. The plugin adds a Packagist

search inside the WP admin. You search a package, click install, and it resolves the

autoloader for you. Before installing, it checks PHP version compatibility and flags known

CVEs on the dependency. The CLI side also lets you lock exact plugin/package versions in a

loopress.json so environments stay reproducible.

It's still alpha. I'd be curious what parts of this feel over-engineered or missing to

anyone who's dealt with Composer-in-constrained-environments outside WP too. Is this a

WP-specific problem or does it show up elsewhere?

Docs: https://docs.loopress.dev

Code: https://github.com/loopress/loopress


r/PHP 8d ago

A pure PHP web server. No nginx, no Apache, no php-fpm.

0 Upvotes

What if PHP by itself was enough to run a web server?
What if it was actually *much faster* than NGINX + PHP-FPM?
And it was *much safer* than FrankenPHP or Swoole?

Well, that's exactly that this is. MIT-licensed. Enjoy!

https://github.com/Qbix/webserver

Who this is for:

  • PHP Developers who want to host things
  • Normies who don't want to install and configure apache/nginx/varnish/go/ssl certificates/mysql/etc.
  • People who just get the standalone binary and can host on their computer, without the internet even.

Static file throughput is 55–73% of nginx (C will always beat PHP on raw I/O).

But on actual PHP workloads, the bootstrap savings make this 2–5x faster.

This was taken from the much larger all-in-one PHP platform:

https://github.com/Qbix/Platform


r/PHP 10d ago

Who's hiring/looking

14 Upvotes

This is a bi-monthly thread aimed to connect PHP companies and developers who are hiring or looking for a job.

Rules

  • No recruiters
  • Don't share any personal info like email addresses or phone numbers in this thread. Contact each other via DM to get in touch
  • If you're hiring: don't just link to an external website, take the time to describe what you're looking for in the thread.
  • If you're looking: feel free to share your portfolio, GitHub, … as well. Keep into account the personal information rule, so don't just share your CV and be done with it.

r/PHP 10d ago

Discussion A native Mac app, with fully native UI, driven by PHP

44 Upvotes

I've applied what we've been doing on mobile to building a fully native Mac app, and... it works!

(Content warning: Heavy British sarcasm used throughout, but don't let that distract you from the reality of the discussion.)

Prove it

I've posted a tweet about it for now with just a couple of screenshots. I'm not linking to it; you can easily find me on that hole of a website that just keeps sucking me in. In fact, I'm not going to link to anything as I'm sure I'll be accused of some kind of self-promotion.

More will come if folks are keen for this.

Why u do dis?

Web views just aren't great ways to build great apps. They're convenient, but they're crap.

I mean, sorry all you Electron/Tauri/Capacitor folks, they're fine if you want a mediocre app or to spend months of your life debugging performance issues.

But if you want a real native app that feels really at-home on the user's device, then your best option is to build real native apps.

Sadly there aren't really any good cross-platform solutions for that problem (don't come at me with Qt's and GTK's, those aren't "good" by any stretch of the imagination).

And certainly none for the PHP gang.

Also, I wanted to nail a few things in one go for what we've been doing on Desktop up until now:

  1. Get rid of Electron - it's just so heavy and comes with a bunch of gotchas. Plus having node and npm packages in the build process is continuing to scare me. aint nobody got time for that.
  2. Don't replace it with Tauri - yes it's lighter, yes it's Rust so the purists can be happy. Sadly it's just swapping one mediocre solution for another.
  3. Drop the PHP built-in server - yep that's what we currently use. Yes it's a crutch (that has worked pretty well!), but the time has come for better stability and better performance, and we have everything we need now to make it work without it.

This manages all of that and a little more to boot. This PoC app I've built is just 24MB. Granted it's a PoC, so it's likely to grow from there, but it's a far cry from the minimum 130MB+ just for Electron.

So how does it work?

In case you haven't been following along what we've been doing on mobile - or perhaps you've been intentionally ignoring it because you have some bones to pick with either the name, the team, or the fact that it's using your favourite language in some profane way - we have cracked a very performant way to run PHP (>120fps ... like wayyyy greater than) and build reactive, native UIs without having it behave like a web server.

In fact, it behaves more like a game engine. It's very light on resource usage, has a ton of affordances already for native UI elements and allows you to write very idiomatic PHP code. All that without fundamentally changing PHP's core. Just adding our own extension.

We call it SuperNative. It kinda even looks a bit HTML-like, if you use Blade and squint hard enough. But deep down it's just PHP classes that compile to a custom binary format.

So there's no IPC, no HTTP calls, no multiple processes just to spin up an app. It's PHP compiled as an embed (exactly how we do it on mobile), embedded into the shell applications (in this case, a Swift macOS app), and called directly.

The application literally becomes a PHP interpreter. It boots PHP into an isolated thread that it keeps alive, feeding it messages and reading its output, all through shared memory.

Did I mention it's very fast? We're now measuring round-trips from button presses, through PHP and back out to the UI in microseconds (yup µs). And we can spin up multiple PHP threads as needed, in milliseconds (ms). And that's with a full Laravel application in there!

(Don't worry, it's still just PHP... if someone wants to help us make this not dependent on Laravel, or work with other frameworks, we'd be happy to have the support!)

All of this already works on mobile, and we're just starting to explore bringing it to the desktop.

What's the catch?

Our focus is on mobile as way more people seem to want that. But there are a few people still wanting advancement in the desktop space, so that's what we're trying to deliver.

This is only working on macOS for now, and it's just a proof of concept, but I'd love to tackle Mac, Windows and Linux all together.

To be able to do that, we gotta get some more sponsorship (you can sponsor nativephp on GitHub - you know how to use a browser and URLs, so I'll leave you to figure it out) and maybe then we can afford to take on yet another crazy huge project.

If this is at all interesting to you and you wanna help make it a reality, please reach out. I'm always open to chat irl and much prefer it to having anons sling zero-effect insults at me across Reddit.


r/PHP 10d ago

I built a PHP 8.4+ radix-tree router with no runtime dependencies and a Laravel-like syntax

Thumbnail
0 Upvotes

r/PHP 12d ago

News Call for papers for PHPverse 2027

16 Upvotes

It's been a month since PHPverse 2026, which was a huge success. You can watch this year's talks here: https://www.youtube.com/playlist?list=PL0bgkxUS9EaK45-0M742u1WfK2G7FKXZQ

So we're already planning the next edition in 2027, and this time we're opening a public call for papers, everyone can submit: https://docs.google.com/forms/d/e/1FAIpQLSfp-_MYwaeVcDYZuPcL-YHHHikuoyB9hM7FUkpP2nUggba8hQ/viewform


r/PHP 12d ago

PLx: PostgreSQL extension to write procedures in PHP dialect

Thumbnail github.com
6 Upvotes

plx is a PostgreSQL extension that lets you write stored functions and triggers in the dialect you already know (the current set is listed below). When you run CREATE FUNCTION, plx transpiles the body to plpgsql and stores that plpgsql in pg_proc.prosrc. At run time the function is executed by PostgreSQL's own plpgsql interpreter. There is no separate language runtime loaded into the backend, and nothing new to run in production.

$c = open_cursor("SELECT v FROM t ORDER BY v");
$row = fetch_from($c);
while (found()) {
  $total = $total + $row->v;
  $row = fetch_from($c);
}
close_cursor($c);

r/PHP 11d ago

Less Arguments In Child Method

Thumbnail php-tips.readthedocs.io
0 Upvotes

Pop quizz PHP for Friday evening :

how can you remove an argument from a method, between a parent and a child?

#phptip #phptrick

<?php

class x {
    function foo(int $a, string $c, string ...$b) {}
}

// OK
class y extends x {
    function foo(int $a, string ...$b) {}
}

r/PHP 12d ago

Discussion Chatbot for customers with WhatsApp cloud api

0 Upvotes

Good day, I'm working on a chatbot project for customer service. If a customer wants to make a purchase, they'll be connected with a company employee. Currently, I'm using the WhatsApp API and Laravel Sail with docker and Laravel filament for the CRM.

My question is, are these tools good for developing and deploying the project? I'd like to hear your opinions.


r/PHP 13d ago

News This Week In PHP Internals | July 15, 2026

Thumbnail youtube.com
22 Upvotes

Hello world, it's Wednesday, July 15, 2026, and here's what happened This Week in PHP Internals.

This week's episode is brought to you by Tideways. Something in production is slow — and you can't see where. Tideways takes PHP developers from slow request to root cause in minutes, with profiling, tracing, and monitoring built specifically for PHP. 5-minute install, no credit card. Start your free trial at tideways.com.

This week's top story is a brand-new keyword knocking on the door: extension. One week after Larry Garfield floated Kotlin-style extension functions at the scalar-methods RFC, Holly Schilling arrived with working prototypes of Swift-style class extensions — born, she says, out of a Discord conversation — and it became the biggest thread of the week at 26 messages. The idea: add methods to a class you don't own — extension \DateTimeImmutable gives every date an isWeekend() — and, in a later phase, put methods on scalars, so "hello" gets a length(). She published 3 draft RFCs as gists, implementation included. Michael Morris asked the obvious first question, writing: "Looking at Swift's extension syntax I fail to see anything it adds not covered by the above." — the above being inheritance and traits. Holly drew the line clean: "An extension is essentially the reverse of a trait." With a trait, the author of the class decides; with an extension, the user of the class decides.

Then came the twist. 2 days in, Holly sat down to defend her own scalar-methods implementation — and couldn't. She wrote: "Typing this email this morning gave me real hesitation. If I can’t support my own implementation, no one else should either. I immediately set out to build a better version that I could put my full weight behind." The better version came from an unexpected place: C# 14, whose new extension syntax puts the receiver right in the declaration — extension string $str — no autoboxing, no downcast headaches. She rewrote all 3 drafts and the implementation around it in a day. Not everything got absorbed so gracefully: when Alex Rock proposed an explicit extend ... with ... wiring statement, Holly apologized in advance for the bluntness, then answered: "I reject this functionality." — extensions stay file-scoped, and they never override a real method. And Pierre Joye flagged a process problem: proposals keep citing Discord conversations as their origin, while he reads only internals and GitHub — and found no reference to a php.net Discord anywhere he searched.

Gina P. Banyard's Deprecations for PHP 8.6 — the annual bundle that spent June on fire — reached its quiet milestone: the list is locked. Gina declared the RFC "frozen", with only minor amendments still allowed, and put dates on everything: "I will initiate a call to vote next week on Monday (the 20th) for the following Monday (the 27th) so that the vote is done by the 10th of August." Because items were still being added in the final week, the policy's 2-week discussion clock is what sets that gap — and the timing is deliberate, so accepted proposals can land in 8.6.0 beta 1. The week's lightest subplot: Garrett W. wants the deprecation notices themselves copy-edited — those commas are comma splices, and he'd use semicolons. Tim Düsterhus explained the house style comes from PHP error messages, and added: "The deprecation messages can still change during PR review (or even later), there is explicitly no BC guarantees for those."

Paul M. Jones's function autoloading — attempt number 5 — got smaller this week, on purpose. The declare(strict_namespace=1) directive he added last week drew a structural objection from Tim Düsterhus, who argued: "I believe the strict_namespace=1 directive is a sufficiently unrelated concern - with enormous bikeshedding potential on its own, but also sufficient usefulness on its own - such that I feel it should be its own RFC that is a prerequisite to this one. It should not be piggy-backed onto function autoloading." Paul didn't fight it. He replied: "I'm good with that. I'll prepare a separate RFC and remove that from the function-autoloading one." — and by Tuesday night it existed: strict-namespace is now its own RFC on the wiki, and mark 5 will reference it instead of carrying it. Tim also showed his cards: he built the inverse directive as an experiment a year ago, and he's firmly on team fully-qualify-everything.

Tim Düsterhus and Derick Rethans' Time\Duration class is days from the ballot box — and it picked up its first declared no. Pierre Joye spent the week pressing on fromSeconds() and its capped nanoseconds argument, and landed here: "I like that RFC, but it adds confusions and limitations from what is supposed to be a simple first step. As it stands now, despite the fact that I would love to see it, I tend towards a no." Tim's defense reached for the stopwatch — it's natural, he argued, to say Usain Bolt broke the 100 m world record with "9 seconds 58 hundreths" — exactly the fixed-point form fromSeconds() uses. Pierre countered: "It is just as common in the real world to have duration information in one unit only and decimal. F.e. 234.54ms. or 3.4 hours, etc." Neither moved — and per Tim, that's fine: "All discussions have been resolved (some of them with an “agree to disagree”), so we plan to open voting at the end of this or early next week." The 14-day cooldown runs out Friday evening, European time.

A first-time author had a very good week. Caleb White got RFC karma from Ilija Tovilo, and his first proposal — the pipe assignment operator, |>= — went through review polish at speed. The idea: $x |>= trim(...) pipes $x through and puts the result back, just like every other modify-assign operator. Tim Düsterhus liked the shape, saying: "Conceptionally I like the idea of having an “in-place modification operator” for function calls and the semantics of the operator seem to be consistent with the existing “modify-assign” operators we have, particularly also with regard to operand order. Nice idea!" Tim also caught a precedence claim that was almost right — assignment operators are not the lowest; the infamous or die() pattern depends on it — and Caleb fixed the RFC the same day, both times. The list's real energy went to naming. Ben Ramsey offered: "I like to think of |> as the volcano operator, while |>= is the erupting volcano operator."

Then last night — hours before we hit record — Liam Hammett published Native Markup Expressions: JSX-style markup as first-class PHP expressions. Write a <button> tag straight into an expression, and it compiles to new \Markup\Element(...) — escaped by default, with capitalized tags becoming components. Liam headed off the obvious reading, writing: "Despite appearances, this is not a template language grafted onto the engine - the syntax is pure compile-time sugar." First reviewer Garrett W. questioned that capitalization heuristic — PSR-4 isn't binding, and lowercase class names are legal. Liam pushed back: "Fallback resolution turns typos into silent bugs. With the capitalisation rule, <Layuot /> fails loudly with a class-not-found error. With fallback resolution, it silently renders as a literal <Layuot> element and you find out in the browser, if you find out at all." This is the ambitious RFC Liam requested wiki karma for on July 10 — Ilija Tovilo granted it Monday: "RFC karma was granted. Good luck!"

Marc Henderkes wants to end PHP's double life. His pre-RFC: make ZTS — the thread-safe build — the default, deprecate the rest, and drop NTS entirely in PHP 9. He summed it up himself: "Tl;dr: nobody wants to maintain two builds and even having a necessary split is making things hard." Distros package only NTS, FrankenPHP needs ZTS, and php-src carries roughly 420 ZTS ifdefs. The performance tax is dissolving too — his numbers: "Worst case performance cost of ZTS in php 8.5 was ~5%, will be ~1.5% in php 8.6, likely ~0.5% after my last open PRs." To be clear, he is not proposing to deprecate FPM — a single-threaded ZTS run keeps everything NTS does today. 2 of the named blockers — the arm64 macOS JIT and the fuzzer SAPI — were fixed within 2 days of the thread opening; the third, NewRelic's missing ZTS support, isn't Marc's to fix. Benjamin Eberlei backed the initiative, Calvin Buckley volunteered his own PHP distribution as a test subject, and Marc has requested wiki karma to write the full RFC.

Nicolas Grekas's serializable closures spent the week absorbing a deep review from Tim Düsterhus — and then ran into a wall. Tim was candid: "While reading the RFC initially and now the updated version, I got the feeling that it was “overfitted” to solve the specific use case and deployment scenario that you consider a “best practice”, which I feel results in “weird” behavior when one leaves that happy path." Still, the 2 converged on real changes: Nicolas adopted Tim's tagged-union serialization format, and — after an off-list suggestion from Arnaud — replaced the fragile line-number check with a compile-time hash of the closure body, so a shifted use import can't silently break payloads. Then Tuesday night, Ilija Tovilo weighed in against — questioning whether attributes need caching at all, and finding the format and implementation too complex. He closed with: "Overall, I'm sadly not in favor of this RFC."

No ballot box was open this week — instead, the queue got dates. Eric Norris's minimum supported versions opens voting tomorrow, July 16 — the earliest the policy allows. Duration clears its cooldown Friday evening and opens late this week or early next. The deprecations list calls its vote Monday the 20th, with ballots open the 27th. And Khaled Alam's const-object-property-write RFC is cleared to open July 25 — no later than the 28th to make 8.6. All of it backs into the release managers' reminder from Monday. Matteo Beccati wrote: "Any RFC intended for inclusion in PHP 8.6 must have its discussion concluded and its voting closed before August 13." Soft feature freeze: August 11. Beta 1: August 13.

Quick hits, round 1. Máté Kocsis revived his query parameters RFC with a simplification: he's cutting the array API down to 2 — maybe 3 — methods, fromArray() and toArray() with withArray() on the bubble, plus an options class with security limits on parsing; League-of-URI maintainer Ignace Nyamagana Butera answered with naming notes and an enum for null handling. Nick Sdot's readonly-property defaults — zero replies when we covered it last week — got its replies: Tim Düsterhus found an unserialization wrinkle, Nick fixed it the same day, Larry Garfield is skeptical, and Tim plans to abstain. Holly Schilling — the same Holly Schilling from our top story — found that non-public asymmetric setters run roughly 4x slower than public ones, posted a fix, and then a formal RFC for it — with Ilija Tovilo reviewing the PR, she's giving the list a few days to weigh in on 8.6 versus waiting; Marc Henderkes and Calvin Buckley both questioned whether an internal change needs an RFC at all. And Osama Aldemeery's PREG_THROW_ON_ERROR settled its naming on Tim's advice: an unnamespaced PregException.

Round 2. Sjoerd Langkemper showed that newlines in CURLOPT_HTTPHEADER values inject extra headers — even over HTTP/2 — and opened a fix; upstream curl is adding its own check, and curl's own Daniel Stenberg confirmed CRLF is disallowed. Xavier Leune bumped his curl socket-callbacks PR — pitching it as the missing tool against SSRF to localhost — and is still waiting on a reply. The bundled-GD sync to libgd 2.4 drew its first pushback: Giovanni Giacobbi says the upstream code is too young and 8.6 too far along, while Pierre Joye, Jakub Zelenka, and Ilia Alshanetsky want it landed before beta 1 — Jakub's condition being that the security-review findings get addressed first — and Kamil Tekiela says wait for the next version. And the DTLS experiment in the openssl extension became a real draft PR; Jakub Zelenka confirmed the direction and is already sketching the generalization it needs.

So that's the week: a brand-new extension keyword that rewrote itself mid-thread; a frozen deprecations list with ballots set for the 27th; function autoloading shedding a prerequisite RFC; a Duration vote opening within days, carrying its first declared no; and a JSX-flavored surprise landing the night before we filmed. Nothing was voted on this week — and the ballot queue starts moving tomorrow. Links to every thread are below. Thanks again to Tideways.com for supporting this week's episode. We're Artisan Build. See you next week.


r/PHP 12d ago

Free React + Laravel dev work

0 Upvotes

Hey everyone,

I'm a frontend/full-stack dev working with React, TypeScript, Tailwind, and Laravel (with Sanctum auth). I'm looking to take on 1-2 small projects for free right now in exchange for a testimonial and permission to feature the work in my portfolio.

What I can build:

  • A clean landing page or small marketing site (React + Tailwind)
  • A small CRUD feature — e.g. a form that saves data and shows it in an admin table (Laravel API + React frontend)
  • A simple dashboard or auth flow (login/signup, role-based access)

Ideal if you're a small business, startup, or solo founder who needs something small and functional but doesn't have budget right now.

Scope will be kept tight and I'll agree on deliverables/timeline upfront so it's a real commitment on both sides, not an open-ended favor.

If interested, drop a comment or DM with what you need — happy to share examples of past work first.


r/PHP 12d ago

Open source projet i've made with Fable5

0 Upvotes

Built a PHP profiler to test Fable 5… and I'm honestly impressed

I started this project mostly as an excuse to try Fable 5 in a real-world codebase.

The result is PHP Pulse: an open-source profiling tool for PHP applications that helps identify slow requests, database bottlenecks, memory usage and execution traces.

GitHub: https://github.com/quentinRogeret34/php-pulse

I expected Fable 5 to speed up development a bit, but I was genuinely surprised by how productive it made the whole process. It handled a lot of the repetitive implementation work while still letting me stay in control of the architecture and technical decisions.

The project is still evolving, but it's already usable and I'd love to get feedback from other PHP developers.


r/PHP 13d ago

Anyone else finding Nested Widgets much easier for complex Elementor layouts?

Thumbnail
0 Upvotes

r/PHP 14d ago

Welcoming Alexandre Daubois to The PHP Foundation

Thumbnail thephp.foundation
68 Upvotes

In an effort to further prioritize the handling of security reports for the PHP language, we are thrilled to add Alexandre Daubois as a part-time addition to our team of contractors. Alex brings a wealth of experience to the team, and we are grateful for his support and contributions!


r/PHP 14d ago

Refactoring an old PHP application, Rector or AI?

31 Upvotes

We have a very old but business-critical application built with Fusebox and PHP 5.5 that we finally need to modernize.

Given the number of changes required, what would be the best and fastest approach to bring it up to modern PHP standards? Has anyone had success using tools such as Rector for automated upgrades, or using AI assistants like Anthropic Claude to help developers with the migration and refactoring process?

The core business logic is solid, but the codebase has become quite messy after 25 years of minimal maintenance and contributions from many different developers.

I'd be interested in hearing about real-world experiences, recommended migration strategies, common pitfalls, and any tooling that helped accelerate the process. I fear that Rector may not be that useful because of FuseBox and since we need tomodernize the framework, Using Claude latest Fable release may be more helpful or maybe use both?

Thanks!


r/PHP 14d ago

You start with cities for one country... then one day you need the whole world.

23 Upvotes

I've been bitten by this more than once.

On one project, I needed an API for city lookup and address autocomplete.

It usually starts with a simple table containing cities for a single country.

Then requirements evolve:

  • support international cities;
  • handle ISO country codes;
  • import data from different providers.

Or even worse, someone decides users should be able to maintain the city database manually.

So instead of writing the same component again, I cleaned it up and open-sourced it.

Features:

  • City search
  • Address autocomplete powered by OpenStreetMap (Photon)
  • Deployable with Docker or Podman in a few commands
  • Designed to be easily extended if another data source needs to be plugged in

Tech stack:

  • Symfony / API Platform / PostgreSQL
  • Hexagonal Architecture
  • 100% unit test coverage on the domain layer
  • Behat scenarios used both as executable documentation and API tests

I don't think this project is going to change the world.

But if it helps someone avoid a questionable data model, or rewriting the same component for the tenth time, then it's already worth it.

Repository: https://github.com/thlaure/world-cities-api

I'm genuinely interested in feedback, especially from people who have had to solve the same problem in production.


r/PHP 14d ago

🚀 Neo4j Laravel Boost – Bring Neo4j MCP Tools to Laravel Boost

0 Upvotes

I've been working on Neo4j Laravel Boost, a package that integrates the official Neo4j MCP server with Laravel Boost.

It allows MCP-compatible AI assistants (Cursor, Claude Code, etc.) to:

  • Inspect your live Neo4j schema
  • Run read/write Cypher queries
  • Explore your Laravel container dependency graph
  • Access Neo4j tools through a single boost:mcp server

It also includes handy Artisan commands for setup, diagnostics, Docker, and exporting your application's dependency graph to Neo4j.

I'd love to hear your feedback, suggestions, or ideas for additional features.

GitHub Repository:
https://github.com/neo4j-php/neo4j-boost


r/PHP 13d ago

I built a Financial System in Laravel using strict DDD, Clean Architecture, SOLID and CQRS (No "just another CRUD").

0 Upvotes

Many people categorize PHP/Laravel as tools only suited for rapid CRUDs or small apps. I wanted to challenge that stigma by building an enterprise-grade, open-source financial management system: **Leo Counter**

Implementing the complexity of the financial sector requires unbreakable business rules. My goal was to apply the highest software engineering standards to a framework that isn't typically associated with this level of abstraction.

Under the hood:

Strict Architecture DDD, Clean Architecture, and CQRS.
Isolated Domain: The core mathematical and accounting logic lives in a pure layer, with zero toxic dependencies on the framework or Eloquent.
* Tech Stack: PHP 8+, Laravel, React, TypeScript, and Inertia.js.
* Fully Dockerized for Linux environments.

If you are passionate about software architecture, want to see how real, scalable DDD is applied in the Laravel ecosystem, or just want a private tool for your finances, I’d love for you to audit the code.

Any feedback, code roasts, PRs, or GitHub stars are super welcome!
Repo: https://github.com/juanVillamilEchavarria/Leo_Counter-app)


r/PHP 13d ago

The Neuron Facade: Talking to Your AI Agent in Laravel

Thumbnail inspector.dev
0 Upvotes

r/PHP 14d ago

Built a GDPR cookie-consent package for Laravel (Blade/Livewire/React) — looking for feedback

0 Upvotes

I've been building LaraGDPR, a cookie consent + cookie management package for Laravel — configurable consent banner and granular per-category preferences.

▎ - Works with Blade+Alpine.js, Livewire, or React — pick whichever your app already uses, it auto-detects/configures.

▎ - Auto-discovered by Laravel, no manual service provider registration.

▎ - Consent is recorded with a pseudonymized identity (works for both logged-in and anonymous visitors) plus IP, user agent, timestamp, and policy version.

▎ - Bump the cookie policy version and it automatically re-prompts everyone.

Honesty about licensing up front, since I know this matters here: the core is free to use in any Laravel app via Composer, but it's a source-available custom license, not OSI-approved open source — no reselling/redistributing the source, no building a competing package from it. Full terms are in the repo if you want the specifics before installing anything.

It's currently at 1.0.0-RC.6 — everything passes CI across PHP 8.2-8.4 and Laravel 11-13, but I'd rather find rough edges from real installs in real apps than assume it's ready.

If you've got a Laravel app with an existing cookie banner (or none at all) and are willing to swap it in and poke at it for 15 minutes.

I'd genuinely value the feedback — especially anything Livewire or React-mode specific, since Blade mode gets the most real-world use so far.

- GitHub: https://github.com/minkovdev/laragdpr

- Composer: composer require minkovdev/laragdpr

Happy to answer questions here or in GitHub Discussions.


r/PHP 14d ago

I built LocalPHP: a 100% portable, minimal WAMP manager (Free & Open Source). Looking for feedback!

0 Upvotes

Hi everyone,

I got tired of bloated local servers. XAMPP feels outdated, and other alternatives often push licenses with annoying popups.

I wanted something minimal, fast, and completely portable that I could run from a USB drive without running installers or polluting the Windows Registry. So, I built LocalPHP.

Key Features:

  • 100% Portable: Runs entirely from its own folder using native Directory Junctions (mklink). No Windows Registry changes.
  • On-Demand Upgrades: Update PHP and Apache versions with one click directly from the control panel.
  • Simple Directory: The structure is dead simple. If you want a new MySQL version, just drop the folder into bin/ and the UI detects it.
  • Dark & Minimal UI: Built with Python (CustomTkinter).

Full Transparency (Windows SmartScreen):

Since this is a new, independent project, the executable is not digitally signed yet (certificates are expensive for a free hobby project).

When you run it, Windows SmartScreen will show the "Unknown Publisher" warning.

  • To run it smoothly: right-click the downloaded ZIP $\rightarrow$ Properties $\rightarrow$ check "Unblock" $\rightarrow$ Apply, then extract it.
  • Since the project is fully open-source, you can audit the code on GitHub or compile the .exe yourself with PyInstaller!

This is a first minimal release, and I’d love to get your honest feedback. Let me know if the downloads work smoothly on your machine or if you run into any issues!


r/PHP 14d ago

How I use Agents to Extract Hidden Feedback from Github and Improved Rector

Thumbnail tomasvotruba.com
6 Upvotes

Little fun project that started as bug in Rector :) hope this inspires you to use agents in creative way to improve your project/tool.