PHP Reddit – Telegram
PHP Reddit
34 subscribers
286 photos
36 videos
24.7K links
Channel to sync with /r/PHP /r/Laravel /r/Symfony. Powered by awesome @r_channels and @reddit2telegram
Download Telegram
Weekly /r/Laravel Help Thread

Ask your Laravel help questions here. To improve your chances of getting an answer from the community, here are some tips:

What steps have you taken so far?
What have you tried from the documentation?
Did you provide any error messages you are getting?
Are you able to provide instructions to replicate the issue?
Did you provide a code example?
Please don't post a screenshot of your code. Use the code block in the Reddit text editor and ensure it's formatted correctly.

For more immediate support, you can ask in the official Laravel Discord.

Thanks and welcome to the r/Laravel community!

https://redd.it/1pxxt3j
@r_php
Last time you roasted my AI-helped CMS so hard I deleted it. Now back with a full micro-framework I built while knowing jack shit about PHP. v0.3.0 with CSRF, route groups, and more. Round 2 ,experts, do your worst.

Hey r/PHP,

Story time (again).

last weeks showoff I posted my homemade CMS. English isn’t my first language, so I used AI to clean up replies. Code was mostly AI-assisted because let's be real I know jack shit about PHP.

You guys didn't hold back:

“AI slop”
“Vibe-coded garbage”
“No tests, no structure”
Someone begged mods to ban “AI vibe-coding”
Flamed me for using AI to reply (just fixing my English, chill)
xkcd 927 (obviously

Felt like crashing an "experts only" party. Deleted the post. Logged off. Thought “damn, maybe they're right.”

Then I got pissed off.

Took your "feedback", used even more AI, and built Intent Framework v0.3.0 a zero-magic, explicit micro-framework running my next CMS.

What's in it (since "incomplete" was your favorite word last time):

Middleware + pipeline
Sessions + flash
Full auth (bcrypt, login, logout)
Events
File cache with Cache::remember()
Validator
Secure file-based API routes
Built-in CLI (php intent serve, make:handler, make:middleware, cache:clear)
CSRF protection middleware (new!)
Route groups with prefix + middleware (new!)
\~3,000 lines core
69 tests, 124 assertions (nice added because you whined)

Repo: https://github.com/aamirali51/Intent-Framework

Full docs: ARCHITECTURE.md (click before roasting)

Here's the punchline:

I still know jack shit about PHP. Still used AI for most of it. And it took less time than most of you spend on one Laravel controller.

Meanwhile, the same "experts" screaming "AI is cheating" quietly hit up ChatGPT when they're stuck at midnight. We all do it. Difference is: I'm upfront about it.

AI isn't "slop" it's a tool. And it let a non-expert ship something cleaner than a lot of "hand-written" stuff here.

So go ahead, elite squad. Roast me harder. Tell me real devs don't use tools. Tell me to learn PHP "properly" first. Drop the xkcd (it's tradition).

I'll be over here... knowing jack shit... and still shipping updates.

Round 2. Bring the heat. 🔥

(This post ain't getting deleted.)

https://redd.it/1pxyn56
@r_php
Hotreload De FrankenPHP

Hey team,

Kevin Dunglass released this "hot\
reload" feature this week and I'd like to know if anyone has tested it yet?

https://redd.it/1pxzwpg
@r_php
Recommend any newer PHP books?

I prefer books or ebooks over video tutorials. Recommend any? Thanks.

https://redd.it/1pybkv1
@r_php
Weekly Ask Anything Thread

Feel free to ask any questions you think may not warrant a post. Asking for help here is also fine.

https://redd.it/1pycb04
@r_php
Weekly help thread

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!

https://redd.it/1pyfh2q
@r_php
Weird text "8194460" appearing on many laravel websites

Crossposting is not allowed, but I wanted to share this post by Maskedman1022000.

Basically, multiple websites have the number 8194460 appearing. When googling I was able to find a few pages that appear to have the number indexed by Google, but all of them just redirected to a login form.

Even https://filamentapps.com/ has it at the top of the website right now.

u/Maskedman1022000 experienced it on his site, but haven't been able to reproduce it in his dev environment.

This is a reminder to check if your pages contain the same bug, and to hear if anyone has more information on the issue.

https://redd.it/1pyhkqa
@r_php
Should it still use global, static and associative array?

dumb question should i still use global, static and associateive array?

https://redd.it/1pykn6w
@r_php
Do you prefer .php in URLs or hiding it? Also… am I structuring Core PHP wrong?


Hey folks,

Kind of a dumb question, but it’s been bugging me more than it should 😅
Do you prefer having .php in your app URLs, or keeping them clean without it?

I know it doesn’t really matter functionally, but seeing .php in URLs just bothers me for some reason.

So what I did was this:
I have an /authenticate route that contains:
- index.php
- style.css

Instead of /authenticate/index.php, when a user visits /authenticate/, they see the page directly.
I mainly did this to hide the .php part. I know this can also be handled properly using .htaccess (Apache) or Nginx rewrite rules, but this felt like a simple and clean solution to me.

GitHub repo: https://github.com/SurajRaika/artifact/
Live site: https://artifact.wuaze.com

Feel free to roast it

---

Another question while I’m here (would really love some advice):

When working with Core PHP, how do you usually structure your project?

What I’m currently trying is:
- Making small “components”
- Each component lives in a single folder
- That folder contains PHP, CSS, and JS related to that component

Something like:

component/
index.php
style.css
noscript.js

What are the pros and cons of doing it this way?
Is this a bad idea long-term?
Is there a better or more common approach when not using a framework?

I’m mostly experimenting and learning, but I feel like I might be reinventing some bad patterns

---

Also,:
I’m kind of looking for a PHP job, so I built this project as practice and something to show.

If anyone has advice, feedback, or even a referral (though I doubt it 🥲), I’d really appreciate it.

Thanks, and sorry if these are beginner-ish questions.
Just asking because most of you probably have way more experience than I do.

https://redd.it/1pyk3xi
@r_php
I modernized a decade-old PHP noscript for importing large MySQL dumps - now it's a full MVC app with 10-50x faster imports

Hello,

I've been working on BigDump, a staggered MySQL dump importer. The original noscript was created by Alexey Ozerov back in 2013, and I've completely refactored it into a modern PHP 8.1+ application.

The problem it solves:
phpMyAdmin times out on files >50MB on shared hosting. BigDump breaks imports into sessions that complete within your server's execution limit.

What's new in v2+:
- Full MVC architecture with PSR-12 compliance
- INSERT batching that groups simple INSERTs into multi-value queries (10-50x speedup)
- Auto-tuning based on available PHP memory
- SSE (Server-Sent Events) for real-time progress streaming
- Session persistence - resume after browser refresh or server restart
- Support for .sql, .gz, and .csv files

Technical highlights:
- Strict type declarations throughout
- Dependency injection via constructors
- Optimized SQL parsing using strpos() jumps instead of char-by-char iteration
- 64KB read buffer for reduced I/O overhead

GitHub: https://github.com/w3spi5/bigdump

It's MIT licensed. I'd love feedback on the architecture, and contributions are welcome. The roadmap includes parallel import streams and a REST API.

Has anyone else dealt with importing multi-GB dumps on constrained hosting? What solutions have you used?

https://redd.it/1pymls1
@r_php
The latest version of AuditTrailBundle

The latest version of AuditTrailBundle introduces a complete and production-ready auditing solution for Symfony applications.

you get:

Reliable core auditing for entity create, update, delete, and soft-delete operations
Attribute-based and YAML-based configuration options
Support for multiple audit transports, including chained transports
Transaction-level grouping of audit records for better traceability
Seamless EasyAdmin integration for audit inspection
A structured Audit Reader API for querying and filtering audit logs
A clear audit diff viewer showing old and new values
Safe and explicit revert capability based on audit history
Built-in support for Gedmo SoftDeleteable entities
Configurable retention policies for long-term audit data management


For detailed documentation and configuration examples, please refer to the README.

https://redd.it/1pym147
@r_php
Content management for laravel apps

Hi all! I have several laravel apps out there but the problem with the clients remains the same. They need a way to manage the marketing end of their app. Basically they need an advanced ‘editor’ like wordpress’ elementor but in the laravel ecosystem.

So far I’ve tried grapejs, ckeditor, filament’s v4 editor and even markdown editor. The clients seem to like tinymce which is what i have as default right now. I hate how tinymce works but it seems its the most feature rich editor (according to the clients at least). I have several opinionated clients that moonlight as designers.

So how do you guys handle such cases?

https://redd.it/1pypy6t
@r_php
I recently launched 2 laravel package , how should i promote it

I recently created and launched 2 laravel package, 1 a laravel installer package and another one is laravel health package. but both having less than 30 stars in github and less installs.

i created the packages , uploaded to github and packagist and waiting for people to use it. but whats the best way to let the developers know about the packages ?

please share your suggestions

https://redd.it/1pytiuy
@r_php
i refactored 2,400 lines of 2015 php spaghetti and the client’s app went from 8s load times to 1.2s

I took on a client project last month. saas app built in 2015, never touched since. php 7.2, laravel 5.something, zero tests, one 800-line controller, and page load times that made users think their wifi died.

client's exact words: "we're scared to change anything because we don't know what breaks."

so i treated the refactor like defusing a bomb: slow, methodical, with safety checks at every step.

the nightmare i inherited

here's what i was dealing with:

* one `OrderController.php` with 847 lines handling checkout, invoices, emails, pdf generation, and webhook callbacks in the same file
* n+1 queries everywhere (one page was hitting the db 340+ times)
* no service classes, no jobs, everything crammed into controllers
* blade templates with raw sql and business logic mixed in
* zero automated tests
* comments like `// TODO: fix this later (2016)`

load times averaged 6–8 seconds for the dashboard. client was losing signups because the checkout page took 12 seconds to render.

step 1: break it into phases instead of yolo refactoring

first mistake most devs make: trying to refactor everything at once.

i dumped the entire checkout flow into traycer and asked it to reverse-engineer what the code actually does and break it into phases. while i was using cursor to scaffold and refactor, i also had coderabbit reviewing the changes in real time so it could flag risky edits and edge cases as the code was being rewritten.

traycer gave me:

* phase 1: extract payment logic into service class
* phase 2: move email/pdf generation into queued jobs
* phase 3: fix n+1 queries with eager loading
* phase 4: split 800-line controller into smaller ones
* phase 5: clean up blade templates (remove business logic)

each phase was small enough that if i broke something, i'd know exactly where.

step 2: the before/after safety trick

here's what saved me from breaking everything:

before touching code in a phase:

* ran a local review on the old code, asked it: "what does this code do, what edge cases does it handle, what breaks if X happens"
* saved the response as `phase1-before.txt`

after refactoring:

* ran the same review on the new code
* saved as `phase1-after.txt`
* compared them

if the behavior denoscriptions didn't match = i broke something.

if they matched = safe to move on.

caught 3 bugs this way that i would've missed otherwise:

* weird timezone handling for EU orders
* silent error swallow that was actually preventing duplicate charges
* race condition with concurrent webhook callbacks

step 3: cursor doing the actual heavy lifting

for each phase, i fed cursor the spec from traycer and let it scaffold the new structure.

phase 1 example:

* cursor created the `PaymentService` class
* moved all stripe/payment logic from controller into service
* updated controller to use the service
* fixed all the imports automatically

did this in composer mode so it could edit multiple files at once. saved me hours of copy-paste-fix-imports hell.

then i'd run the before/after check, fix anything that diverged, write a few quick tests, and move to next phase.

step 4: fixing the performance disasters

once behavior was safe, i did a performance-focused review pass on each phase:

prompt i used:

>"scan for n+1 queries, missing indexes, heavy loops, and unnecessary db calls. show me file:line and a one-liner fix."

fed that back into cursor and let it optimize.

biggest win: the order listing page went from 340 db queries to 8 with proper eager loading. that alone dropped load time from 8s to 2s.

the results after 6 days

before:

* 2,400 lines across 4 files
* 6–8s average dashboard load
* 12s checkout page render
* zero tests
* client losing conversions because of speed

after:

* 1,850 lines across 14 cleaner files
* 1.2s dashboard load (83% faster)
* 2.8s checkout render (77% faster)
* 40+ tests covering critical paths
* client's conversion rate up 34% week one (pricing page was loading so slow)

https://redd.it/1pyvsls
@r_php