fields
https://preview.redd.it/0nttl4gvatvg1.png?width=1148&format=png&auto=webp&s=ad6007d4878672ae2994599873826042e4d69585
# Language server
# Symfony features
# Codelens
* (PHP) (extended) nelmio alias
* (YAML) (vanilla) params envs
* (YAML) (vanilla) Bundle configuration full view
# Completions
* (PHP) (extended) doctrine orm mapping convention
* (PHP) (extended) doctrine orm query completion
* (PHP) (extended) Form options and constrains
# Definition navigation
* (YAML) (vanilla) services navigation -> fqn, `@` alias and services ids
* (PHP) (extended) Doctrine mapping columns references navigation
* (PHP) (extended) Openapi navigation from `#/components/...` to named entity (alias) defintion
* (YAML) (extended) Openapi navigation from alias class to class file
# Diagnosis
* (PHP) (extended) Doctrine diagnostics for QueryBuilder/DQL semantics and migration drift checks.
* (PHP) (extended) Apidoc consistency with routes definition in controllers
* (PHP) (extended) Diagnostics for form field and entity/DTO property mismatches.
# Implementations
* (PHP) (extended) Support for navigation from form types -> `getBlockPrefix` to twig block defined
# Refactor
* (PHP) (extended) Doctrine entity fields across usages in code and references
* (PHP) (extended) Rename php class
* (PHP) (extended) Rename services ids
* (YAML) (extended) Rename nelmio named entities aliases
# References
* (PHP) (extended) Handle for Nelmio API Doc alias references
# Twig Features
# Codelens
* Block inherance
* Controllers references -> show controllers where the template is used
# Completions
* controllers
* filters
* functions
* global variables
* route names
* template paths
* twig components
* for-loop
# Definitions
* assets
* components
* controller
* env-variables
* form blocks
* form theme
* parameters
* routes
* services
* template-paths
# Gutters
* block inherance -> navigation hover
* controller
# Hovers
* filters
* for-loop
* functions
* global-variables
* local-variables
* (extended+) twig-components
# Chat Participant
This extension enables `@symfony` chat participant that have access to tools and project context and custom prompting to specialize and focus agent as PHP/Symfony expert.
User must set provider and model to use in settings -> available in workspace status full view.
`@symfony` have the following commands
* `/status` Show routes in the current Symfony project
* `/parameters` Show parameters in the current Symfony project
* `/bundles` Show bundles in the current Symfony project
* `/controllers` Show controllers in the current Symfony project
* `/templates` Show templates in the current Symfony project
* `/variables` Show chat prompt variables
* `/make` Create a Symfony component such as a controller, entity, or form.
`@symfony` have the following tools - managed automatically by the chat participant
* `symfony_command_info`
* `symfony_list_commands`
* `symfony_execute`
Commands security policy is managed via settings. Chat participant implements a commands policy layer that is gonna ask the user before execute commands.
>
**I am looking for a closed group of users to help me to debug, this will be formalized later as "insider user" program.**
https://redd.it/1socnzl
@r_php
https://preview.redd.it/0nttl4gvatvg1.png?width=1148&format=png&auto=webp&s=ad6007d4878672ae2994599873826042e4d69585
# Language server
# Symfony features
# Codelens
* (PHP) (extended) nelmio alias
* (YAML) (vanilla) params envs
* (YAML) (vanilla) Bundle configuration full view
# Completions
* (PHP) (extended) doctrine orm mapping convention
* (PHP) (extended) doctrine orm query completion
* (PHP) (extended) Form options and constrains
# Definition navigation
* (YAML) (vanilla) services navigation -> fqn, `@` alias and services ids
* (PHP) (extended) Doctrine mapping columns references navigation
* (PHP) (extended) Openapi navigation from `#/components/...` to named entity (alias) defintion
* (YAML) (extended) Openapi navigation from alias class to class file
# Diagnosis
* (PHP) (extended) Doctrine diagnostics for QueryBuilder/DQL semantics and migration drift checks.
* (PHP) (extended) Apidoc consistency with routes definition in controllers
* (PHP) (extended) Diagnostics for form field and entity/DTO property mismatches.
# Implementations
* (PHP) (extended) Support for navigation from form types -> `getBlockPrefix` to twig block defined
# Refactor
* (PHP) (extended) Doctrine entity fields across usages in code and references
* (PHP) (extended) Rename php class
* (PHP) (extended) Rename services ids
* (YAML) (extended) Rename nelmio named entities aliases
# References
* (PHP) (extended) Handle for Nelmio API Doc alias references
# Twig Features
# Codelens
* Block inherance
* Controllers references -> show controllers where the template is used
# Completions
* controllers
* filters
* functions
* global variables
* route names
* template paths
* twig components
* for-loop
# Definitions
* assets
* components
* controller
* env-variables
* form blocks
* form theme
* parameters
* routes
* services
* template-paths
# Gutters
* block inherance -> navigation hover
* controller
# Hovers
* filters
* for-loop
* functions
* global-variables
* local-variables
* (extended+) twig-components
# Chat Participant
This extension enables `@symfony` chat participant that have access to tools and project context and custom prompting to specialize and focus agent as PHP/Symfony expert.
User must set provider and model to use in settings -> available in workspace status full view.
`@symfony` have the following commands
* `/status` Show routes in the current Symfony project
* `/parameters` Show parameters in the current Symfony project
* `/bundles` Show bundles in the current Symfony project
* `/controllers` Show controllers in the current Symfony project
* `/templates` Show templates in the current Symfony project
* `/variables` Show chat prompt variables
* `/make` Create a Symfony component such as a controller, entity, or form.
`@symfony` have the following tools - managed automatically by the chat participant
* `symfony_command_info`
* `symfony_list_commands`
* `symfony_execute`
Commands security policy is managed via settings. Chat participant implements a commands policy layer that is gonna ask the user before execute commands.
>
**I am looking for a closed group of users to help me to debug, this will be formalized later as "insider user" program.**
https://redd.it/1socnzl
@r_php
Symfony Kit For Developers
/r/symfony/comments/1socnzl/symfony_kit_for_developers/
https://redd.it/1socojv
@r_php
/r/symfony/comments/1socnzl/symfony_kit_for_developers/
https://redd.it/1socojv
@r_php
Reddit
From the PHP community on Reddit: Symfony Kit For Developers
Posted by ngg990 - 0 votes and 0 comments
I built HorizonHub: monitor multiple Laravel Horizon services in one place
Hey everyone,
I wanted to share something I built for myself called **HorizonHub**.
I work with several Laravel services using Horizon in production environment, and I kept feeling the same pain: checking queues/jobs/workers across services was messy and annoying.
For me it's important that these jobs workflows are correctly scheduled and executed, because failed jobs or even when workers become offline could have a real, negative impact (revenue, support load, data consistency, SLAs, on-call, etc.).
So I started building a small tool to make my own life easier.
Right now, HorizonHub lets me:
* Monitor jobs from multiple Laravel services in one place
* Restart jobs in batch
* Receive alerts
[All jobs can be viewed at a glance](https://preview.redd.it/qcazg2amwsvg1.png?width=2994&format=png&auto=webp&s=c2b2c562dc2f2686134171cc057d0a456adc6cd9)
https://preview.redd.it/vautl6a0xsvg1.png?width=2994&format=png&auto=webp&s=cec635dcebaa3e6e947555d03667ae37bc876213
It’s still early and very much a real "*built-from-need*" project.
If you run several Laravel apps with Horizon and are tired of switching between dashboards, this might be useful.
If anyone wants to try it, checkout the Github repository: [https://github.com/enegalan/horizonhub](https://github.com/enegalan/horizonhub).
Any feedback (good or bad) helps me improve it 🙏
https://redd.it/1soau8j
@r_php
Hey everyone,
I wanted to share something I built for myself called **HorizonHub**.
I work with several Laravel services using Horizon in production environment, and I kept feeling the same pain: checking queues/jobs/workers across services was messy and annoying.
For me it's important that these jobs workflows are correctly scheduled and executed, because failed jobs or even when workers become offline could have a real, negative impact (revenue, support load, data consistency, SLAs, on-call, etc.).
So I started building a small tool to make my own life easier.
Right now, HorizonHub lets me:
* Monitor jobs from multiple Laravel services in one place
* Restart jobs in batch
* Receive alerts
[All jobs can be viewed at a glance](https://preview.redd.it/qcazg2amwsvg1.png?width=2994&format=png&auto=webp&s=c2b2c562dc2f2686134171cc057d0a456adc6cd9)
https://preview.redd.it/vautl6a0xsvg1.png?width=2994&format=png&auto=webp&s=cec635dcebaa3e6e947555d03667ae37bc876213
It’s still early and very much a real "*built-from-need*" project.
If you run several Laravel apps with Horizon and are tired of switching between dashboards, this might be useful.
If anyone wants to try it, checkout the Github repository: [https://github.com/enegalan/horizonhub](https://github.com/enegalan/horizonhub).
Any feedback (good or bad) helps me improve it 🙏
https://redd.it/1soau8j
@r_php
I made a visual explainer on the Observer Pattern — would love your honest feedback
https://youtu.be/zkKbv7BH2f0?si=2BhcEMLYf_ECLEly
https://redd.it/1sovdsz
@r_php
https://youtu.be/zkKbv7BH2f0?si=2BhcEMLYf_ECLEly
https://redd.it/1sovdsz
@r_php
YouTube
Observer Pattern Explained — One Source of Change, Many Listeners
One object changes, and suddenly everything needs to know. The Observer Pattern solves this elegantly. In this video, I break down the coupling problem, walk through the mechanism step by step, and build a full implementation in PHP.
Timestamps:
00:00 — The…
Timestamps:
00:00 — The…
AuditTrailBundle v3: Improvements
There’s a much bigger list of improvements in v3 release, but I wanted to share one feature I’m especially happy with: when reverting an audit log, the UI now previews exactly what will be restored, including many-to-many relationships like tags and categories.
That makes revert workflows feel a lot safer and much less like a blind rollback.
If this looks useful for your Symfony/Doctrine projects, give it a try and let me know what you think. Feedback would really help shape the next improvements.
symfony audit bundle
https://redd.it/1sowpj0
@r_php
There’s a much bigger list of improvements in v3 release, but I wanted to share one feature I’m especially happy with: when reverting an audit log, the UI now previews exactly what will be restored, including many-to-many relationships like tags and categories.
That makes revert workflows feel a lot safer and much less like a blind rollback.
If this looks useful for your Symfony/Doctrine projects, give it a try and let me know what you think. Feedback would really help shape the next improvements.
symfony audit bundle
https://redd.it/1sowpj0
@r_php
GitHub
GitHub - rcsofttech85/AuditTrailBundle: Handles audit logging without blocking requests by splitting capture and dispatch phases.
Handles audit logging without blocking requests by splitting capture and dispatch phases. - rcsofttech85/AuditTrailBundle
! $thing vs !$thing - minor pint microrant
Who is really putting a space after the ! in conditions? The Laravel pint rules just seem a bit off on this point. Am I alone?
https://redd.it/1soxshm
@r_php
Who is really putting a space after the ! in conditions? The Laravel pint rules just seem a bit off on this point. Am I alone?
if (! $thing) { } // ?? if (!$thing) { } // The way of the 99%https://redd.it/1soxshm
@r_php
Reddit
From the laravel community on Reddit
Explore this post and more from the laravel community
A job is "successful", but did nothing - how do you catch that?
6 days ago I was discussing queue monitoring in Laravel. Someone asked a really interesting question:
>
Example: a job was supposed to create \~2000 users, but ended up creating \~400 and still showed as success 🤡 That made me realize I wasn’t tracking this at all.
No errors → everything is green → but the data is already off. So I tried a simple approach: now each job builds a “normal” execution time baseline, and if a new run is:
suspiciously fast
or much slower than usual
it gets flagged as anomalous. Basically trying to catch silent failures where there’s no exception, but something clearly went wrong. Also added a few more things: when I detect jobs that stopped mid-execution, I can now get real-time notifications via Slack or Webhooks. For more critical cases, I can escalate alerts through PagerDuty or Opsgenie (I personally use both).
Curious how others handle this - do you track anything like this or rely on business-level checks?
https://redd.it/1soxdxo
@r_php
6 days ago I was discussing queue monitoring in Laravel. Someone asked a really interesting question:
>
Example: a job was supposed to create \~2000 users, but ended up creating \~400 and still showed as success 🤡 That made me realize I wasn’t tracking this at all.
No errors → everything is green → but the data is already off. So I tried a simple approach: now each job builds a “normal” execution time baseline, and if a new run is:
suspiciously fast
or much slower than usual
it gets flagged as anomalous. Basically trying to catch silent failures where there’s no exception, but something clearly went wrong. Also added a few more things: when I detect jobs that stopped mid-execution, I can now get real-time notifications via Slack or Webhooks. For more critical cases, I can escalate alerts through PagerDuty or Opsgenie (I personally use both).
Curious how others handle this - do you track anything like this or rely on business-level checks?
https://redd.it/1soxdxo
@r_php
Reddit
From the PHP community on Reddit
Explore this post and more from the PHP community
EasyAdmin and Rich Doctrine Models
Hi there! In the Doctrine Getting Started tutorial, they recommend using rich models for entities, and I really like this approach.
But on the other hand, we have EasyAdmin, which doesn’t work well with rich models and instead prefers anemic models with simple getters/setters or even public fields.
So my main question is: how do you organize your rich models (if you use them) together with EasyAdmin?
Because EasyAdmin even throws an exception when your entity’s
https://redd.it/1soycds
@r_php
Hi there! In the Doctrine Getting Started tutorial, they recommend using rich models for entities, and I really like this approach.
But on the other hand, we have EasyAdmin, which doesn’t work well with rich models and instead prefers anemic models with simple getters/setters or even public fields.
So my main question is: how do you organize your rich models (if you use them) together with EasyAdmin?
Because EasyAdmin even throws an exception when your entity’s
__construct() method has parameters :/https://redd.it/1soycds
@r_php
www.doctrine-project.org
Getting Started with Doctrine - Doctrine Object Relational Mapper (ORM)
Doctrine Object Relational Mapper Documentation: Getting Started with Doctrine
Your job "succeeded" but did nothing how do you even catch that?
Had an interesting conversation recently about queue monitoring in Laravel. Someone came to me with a production case: a job was supposed to create 10,000 users, created 400, and still reported as successful. No errors, no exceptions, everything green. And I realized, right now my system can't even tell whether a job actually did what it was supposed to. I started looking at other monitoring tools, and most of them just say "it ran" or "it failed". But what about when it runs, doesn't crash, and just ... does the wrong thing?
Started thinking about tracking execution time baselines, if a job that normally takes 30 seconds suddenly finishes in 2, something's probably off. But that only catches the obvious cases. The harder question is: should the job itself validate its own result? Like "I was supposed to create 10,000 records, I created 400, that's not right"? Or is that already business logic and doesn't belong in monitoring?
Because the moment you start checking results, you're basically writing tests for every job, and that feels like a rabbit hole.
Curious how you guys handle this. Do you just trust "no error = success" or do you actually verify what happened after the job ran?
https://preview.redd.it/h4rmtwsh5zvg1.png?width=1254&format=png&auto=webp&s=97bc1b8e41e91829b89a2408b1c35f7d9d294d42
Is it even worth digging into this or is it overengineering?
GitHub: https://github.com/RomaLytar/yammi-jobs-monitoring-laravel
https://redd.it/1sp21ht
@r_php
Had an interesting conversation recently about queue monitoring in Laravel. Someone came to me with a production case: a job was supposed to create 10,000 users, created 400, and still reported as successful. No errors, no exceptions, everything green. And I realized, right now my system can't even tell whether a job actually did what it was supposed to. I started looking at other monitoring tools, and most of them just say "it ran" or "it failed". But what about when it runs, doesn't crash, and just ... does the wrong thing?
Started thinking about tracking execution time baselines, if a job that normally takes 30 seconds suddenly finishes in 2, something's probably off. But that only catches the obvious cases. The harder question is: should the job itself validate its own result? Like "I was supposed to create 10,000 records, I created 400, that's not right"? Or is that already business logic and doesn't belong in monitoring?
Because the moment you start checking results, you're basically writing tests for every job, and that feels like a rabbit hole.
Curious how you guys handle this. Do you just trust "no error = success" or do you actually verify what happened after the job ran?
https://preview.redd.it/h4rmtwsh5zvg1.png?width=1254&format=png&auto=webp&s=97bc1b8e41e91829b89a2408b1c35f7d9d294d42
Is it even worth digging into this or is it overengineering?
GitHub: https://github.com/RomaLytar/yammi-jobs-monitoring-laravel
https://redd.it/1sp21ht
@r_php
I built a VS Code extension to make Laravel projects easier for AI tools to understand
I was working on some older Laravel projects recently and noticed something frustrating when using AI tools like Codex or Claude.
They struggle to understand the actual database schema of the app.
Even though all the information is technically there (models, migrations, relationships), the AI has to parse everything manually, which:
wastes tokens
misses relationships sometimes
makes responses inconsistent
So I built a small VS Code extension to solve this.
It scans:
app/Models
database/migrations
And generates a clean Markdown file with:
table structure
columns
foreign keys
Eloquent relationships
The idea is simple:
Instead of making AI read your entire codebase, you give it a structured summary of your schema.
This makes it easier to:
explain your project to AI
debug faster
onboard into older Laravel codebases
I’m still experimenting with it, so I’d love feedback:
Would this actually fit into your workflow?
Anything you’d want it to include?
GitHub:
https://github.com/u-did-it/laravel-model-markdown-generator
https://redd.it/1sp75be
@r_php
I was working on some older Laravel projects recently and noticed something frustrating when using AI tools like Codex or Claude.
They struggle to understand the actual database schema of the app.
Even though all the information is technically there (models, migrations, relationships), the AI has to parse everything manually, which:
wastes tokens
misses relationships sometimes
makes responses inconsistent
So I built a small VS Code extension to solve this.
It scans:
app/Models
database/migrations
And generates a clean Markdown file with:
table structure
columns
foreign keys
Eloquent relationships
The idea is simple:
Instead of making AI read your entire codebase, you give it a structured summary of your schema.
This makes it easier to:
explain your project to AI
debug faster
onboard into older Laravel codebases
I’m still experimenting with it, so I’d love feedback:
Would this actually fit into your workflow?
Anything you’d want it to include?
GitHub:
https://github.com/u-did-it/laravel-model-markdown-generator
https://redd.it/1sp75be
@r_php
GitHub
GitHub - u-did-it/laravel-model-markdown-generator: Generate Markdown documentation from Laravel models and migrations to help…
Generate Markdown documentation from Laravel models and migrations to help developers and AI agents understand database relationships in existing projects. - u-did-it/laravel-model-markdown-generator
Wall of Shame: 22% of PHP composer packages' disk space occupied by just 481 packages
**The Top 99.9 Percentile of Packagist.org packages by Disk Space**
Vendors who have projects that are 137.56 MB or more in disk space.
| vendor | repo_count | total_mb | total_stars | badness_score |
|---------------|------------|----------|-------------|----------------|
| themelogy | 55 | 2117.94 | 0 | 2117.9375 |
| correctch | 1 | 1838.14 | 0 | 1838.1406 |
| acosf | 2 | 8455.12 | 4 | 1691.0242 |
| azaw | 7 | 1541.30 | 0 | 1541.2969 |
| khandieyea | 5 | 2752.62 | 1 | 1376.3105 |
| rockmelodies | 2 | 1191.33 | 0 | 1191.3320 |
| triasigaka | 3 | 1130.77 | 0 | 1130.7695 |
| quatrain | 1 | 1127.27 | 0 | 1127.2695 |
| shakilahmmed | 1 | 1038.98 | 0 | 1038.9805 |
| mhinspeya | 46 | 867.81 | 0 | 867.8086 |
| simp | 14 | 611.33 | 0 | 611.3320 |
| queenco | 1 | 582.62 | 0 | 582.6211 |
| olcaytaner | 24 | 582.17 | 0 | 582.1680 |
| youdevcms | 1 | 556.47 | 0 | 556.4727 |
| centurion | 1 | 551.42 | 0 | 551.4180 |
| devarul | 1 | 550.79 | 0 | 550.7891 |
| pantech | 1 | 527.14 | 0 | 527.1445 |
| zfmaster | 3 | 519.66 | 0 | 519.6641 |
| vectorbross | 47 | 517.84 | 0 | 517.8359 |
| ing‑lib | 1 | 476.87 | 0 | 476.8711 |
| stampy | 1 | 466.27 | 0 | 466.2695 |
| ivan‑matthews | 3 | 465.25 | 0 | 465.2461 |
| order‑counter | 1 | 447.11 | 0 | 447.1055 |
| jsmarion | 1 | 438.70 | 0 | 438.6953 |
| coffeekraken | 1 | 416.82 | 0 | 416.8164 |
| phila088 | 1 | 416.44 | 0 | 416.4375 |
| zver | 22 | 408.09 | 0 | 408.0898 |
| pggns | 15 | 397.84 | 0 | 397.8398 |
| planet4‑rpg | 1 | 396.80 | 0 | 396.7969 |
| yalla‑ya | 2 | 1187.23 | 2 | 395.7448 |
* Disk space used by all (440,000+) of Packagist.org projects? **699,648 MB**
* Disk space used by Biggest 481? **163,425 MB (23.36%)**
Full report and more stats: https://github.com/bettergistco/PackagistArchive/blob/master/huge_vendors.md
Note: None of these packages are included in the Bettergist Packagist Archive + Civilization Bootstrap USBs. This shrinks total necessary space, after compression, from more than 300 GB to exactly 95 GB, a considerable savings.
This is because the majority of the disk space used by the Biggest 481 packages is occupied by already-compressed image and video assets.
https://redd.it/1spbhfn
@r_php
**The Top 99.9 Percentile of Packagist.org packages by Disk Space**
Vendors who have projects that are 137.56 MB or more in disk space.
| vendor | repo_count | total_mb | total_stars | badness_score |
|---------------|------------|----------|-------------|----------------|
| themelogy | 55 | 2117.94 | 0 | 2117.9375 |
| correctch | 1 | 1838.14 | 0 | 1838.1406 |
| acosf | 2 | 8455.12 | 4 | 1691.0242 |
| azaw | 7 | 1541.30 | 0 | 1541.2969 |
| khandieyea | 5 | 2752.62 | 1 | 1376.3105 |
| rockmelodies | 2 | 1191.33 | 0 | 1191.3320 |
| triasigaka | 3 | 1130.77 | 0 | 1130.7695 |
| quatrain | 1 | 1127.27 | 0 | 1127.2695 |
| shakilahmmed | 1 | 1038.98 | 0 | 1038.9805 |
| mhinspeya | 46 | 867.81 | 0 | 867.8086 |
| simp | 14 | 611.33 | 0 | 611.3320 |
| queenco | 1 | 582.62 | 0 | 582.6211 |
| olcaytaner | 24 | 582.17 | 0 | 582.1680 |
| youdevcms | 1 | 556.47 | 0 | 556.4727 |
| centurion | 1 | 551.42 | 0 | 551.4180 |
| devarul | 1 | 550.79 | 0 | 550.7891 |
| pantech | 1 | 527.14 | 0 | 527.1445 |
| zfmaster | 3 | 519.66 | 0 | 519.6641 |
| vectorbross | 47 | 517.84 | 0 | 517.8359 |
| ing‑lib | 1 | 476.87 | 0 | 476.8711 |
| stampy | 1 | 466.27 | 0 | 466.2695 |
| ivan‑matthews | 3 | 465.25 | 0 | 465.2461 |
| order‑counter | 1 | 447.11 | 0 | 447.1055 |
| jsmarion | 1 | 438.70 | 0 | 438.6953 |
| coffeekraken | 1 | 416.82 | 0 | 416.8164 |
| phila088 | 1 | 416.44 | 0 | 416.4375 |
| zver | 22 | 408.09 | 0 | 408.0898 |
| pggns | 15 | 397.84 | 0 | 397.8398 |
| planet4‑rpg | 1 | 396.80 | 0 | 396.7969 |
| yalla‑ya | 2 | 1187.23 | 2 | 395.7448 |
* Disk space used by all (440,000+) of Packagist.org projects? **699,648 MB**
* Disk space used by Biggest 481? **163,425 MB (23.36%)**
Full report and more stats: https://github.com/bettergistco/PackagistArchive/blob/master/huge_vendors.md
Note: None of these packages are included in the Bettergist Packagist Archive + Civilization Bootstrap USBs. This shrinks total necessary space, after compression, from more than 300 GB to exactly 95 GB, a considerable savings.
This is because the majority of the disk space used by the Biggest 481 packages is occupied by already-compressed image and video assets.
https://redd.it/1spbhfn
@r_php
GitHub
PackagistArchive/huge_vendors.md at master · bettergistco/PackagistArchive
An archive of virtually every Packagist.org PHP repository. - bettergistco/PackagistArchive
Pitch Your Project 🐘
In this monthly thread you can share whatever code or projects you're working on, ask for reviews, get people's input and general thoughts, … anything goes as long as it's PHP related.
Let's make this a place where people are encouraged to share their work, and where we can learn from each other 😁
Link to the previous edition: /u/brendt_gd should provide a link
https://redd.it/1spmssc
@r_php
In this monthly thread you can share whatever code or projects you're working on, ask for reviews, get people's input and general thoughts, … anything goes as long as it's PHP related.
Let's make this a place where people are encouraged to share their work, and where we can learn from each other 😁
Link to the previous edition: /u/brendt_gd should provide a link
https://redd.it/1spmssc
@r_php
Reddit
From the PHP community on Reddit
Explore this post and more from the PHP community
A Week of Symfony #1007 (April 13–19, 2026)
https://symfony.com/blog/a-week-of-symfony-1007-april-13-19-2026?utm_medium=feed&utm_source=Symfony%20Blog%20Feed
https://redd.it/1spoon5
@r_php
https://symfony.com/blog/a-week-of-symfony-1007-april-13-19-2026?utm_medium=feed&utm_source=Symfony%20Blog%20Feed
https://redd.it/1spoon5
@r_php
Symfony
A Week of Symfony #1007 (April 13–19, 2026) (Symfony Blog)
This week, Symfony UX released the 2.35 maintenance version and the new 3.0 major version, which removes all deprecated features and updates the PHP and Symfony requirements. In addition, we published…
Stop Users From Choosing Breached Passwords in Laravel
https://bubble.ro/2026/04/19/stop-users-from-choosing-breached-passwords-in-laravel/
https://redd.it/1sps2cy
@r_php
https://bubble.ro/2026/04/19/stop-users-from-choosing-breached-passwords-in-laravel/
https://redd.it/1sps2cy
@r_php
If you like to have music to focus while coding check this out
https://www.reddit.com/r/itsachillaccount/comments/1sej91h/coding_playlists_for_my_learning_journey/oeqbqep/
https://redd.it/1sptrxr
@r_php
https://www.reddit.com/r/itsachillaccount/comments/1sej91h/coding_playlists_for_my_learning_journey/oeqbqep/
https://redd.it/1sptrxr
@r_php
Reddit
itsachillaccount's comment on "Coding playlists for my learning journey"
Explore this conversation and more from the itsachillaccount community
When your first learn php what confuse the most ?
coming from go (I love golang) but I wanna do a little bit of freelancing so im doing some leetcode to understand php so I can learn lavarel and im not gonna lie im confuse by $ for local variable and params function (params function is variable underneath so it make sense ) and the array_push(references, ...values) and you what surprise or confuse you when you first learn php ? just started but php seems a little bit more complex than go am I wrong ?
https://redd.it/1spvhzm
@r_php
coming from go (I love golang) but I wanna do a little bit of freelancing so im doing some leetcode to understand php so I can learn lavarel and im not gonna lie im confuse by $ for local variable and params function (params function is variable underneath so it make sense ) and the array_push(references, ...values) and you what surprise or confuse you when you first learn php ? just started but php seems a little bit more complex than go am I wrong ?
https://redd.it/1spvhzm
@r_php
Reddit
From the PHP community on Reddit
Explore this post and more from the PHP community
Planning to get back into writing Laravel content and would love some feedback on my direction
I've been building with Laravel for a while now and somewhere along the way I stopped writing about it. Life, client work, you know how it goes.
But I've decided to get back into it properly. I'm refreshing my site and starting to put out content that's actually useful for the Laravel community rather than just generic tutorial stuff that already exists everywhere.
My focus is going to be on:
1. Real world implementation patterns not just hello world examples.
2. Laravel with modern tooling like Livewire, Filament, and Inertia.
3. AI integration in Laravel apps which is something I've been doing a lot of lately.
4. Performance and architecture decisions for production apps.
I want it to feel less like a documentation mirror and more like something written by someone who's actually shipped Laravel apps and hit the real problems.
If anyone's curious the site is larashout.com, it's a bit bare right now but that's kind of the point of this post. I'm rebuilding it with intention this time.
My question for the community is what are you actually struggling with in Laravel right now that you can't find a solid answer for? What would you actually want to read?
I'd rather write ten posts that genuinely help people than a hundred that nobody bookmarks.
https://redd.it/1spt4l5
@r_php
I've been building with Laravel for a while now and somewhere along the way I stopped writing about it. Life, client work, you know how it goes.
But I've decided to get back into it properly. I'm refreshing my site and starting to put out content that's actually useful for the Laravel community rather than just generic tutorial stuff that already exists everywhere.
My focus is going to be on:
1. Real world implementation patterns not just hello world examples.
2. Laravel with modern tooling like Livewire, Filament, and Inertia.
3. AI integration in Laravel apps which is something I've been doing a lot of lately.
4. Performance and architecture decisions for production apps.
I want it to feel less like a documentation mirror and more like something written by someone who's actually shipped Laravel apps and hit the real problems.
If anyone's curious the site is larashout.com, it's a bit bare right now but that's kind of the point of this post. I'm rebuilding it with intention this time.
My question for the community is what are you actually struggling with in Laravel right now that you can't find a solid answer for? What would you actually want to read?
I'd rather write ten posts that genuinely help people than a hundred that nobody bookmarks.
https://redd.it/1spt4l5
@r_php
Larashout
Larashout | Practical Laravel, PHP, JavaScript, and web development tutorials
Practical Laravel, PHP, JavaScript, and web development tutorials with searchable guides, categories, and static publishing.
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/1sqgs0t
@r_php
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/1sqgs0t
@r_php
Reddit
From the PHP community on Reddit
Explore this post and more from the PHP community
I spent my senior year building a pure-PHP async ecosystem for PHP 8.4. Meet HiblaPHP
I'm a final-year IT student in the Philippines. Between classes, I spent months building a complete async I/O ecosystem for PHP from scratch. Today I'm releasing it as Public Beta and I'd love your brutal feedback.
It's called Hibla a Tagalog for "Fiber."
### Why I Built This
PHP was the first programming language I ever learned and loved. And for a long time, like a lot of PHP developers, I thought async was something that happened elsewhere in Node.js, in Go, in "serious" backend languages.
Then I found ReactPHP. It cracked something open in my brain. I realized async wasn't a language feature, it was an idea, and PHP was capable of it. I got obsessed. I wanted to understand it from the ground up, not just use a library, but build one so I'd truly know how it worked.
Hibla is what came out of that obsession. It started as a learning project. It turned into something I think is actually useful.
### What's in the Ecosystem
- Event Loop: Dual-driver (
- MySQL Driver: Pure-PHP binary protocol with side-channel
- HTTP Client: Async by default, full SSE support, and with full Http Mocking Simulator.
- Parallel: Erlang-style supervised worker pools that detect segfaults and OOMs and automatically respawn replacements
- Structured Concurrency: A strict 4-state Promise model that makes cleanup deterministic and safe
### The Core Idea: Fractal Concurrency
The design goal I'm most proud of: because every worker is "smart" and runs its own event loop, you can compose units of concurrency recursively. Parallel processes, async fibers, and raw I/O all interleave inside a single
### Performance
To stress-test the foundation, I built a raw TCP responder using
### Standing on Giants
Hibla wouldn't exist without ReactPHP, whose work taught me how async PHP actually functions, and AmPHP, whose pioneering RFC work brought native Fibers to the PHP engine. I'm genuinely in their debt.
### Honest Caveats
- No dedicated docs site yet. Every package has a thorough README covering lifecycle events, trade-offs, and examples. It's not pretty, but it's complete.
- This is a Public Beta. I expect rough edges. That's exactly why I'm here.
I'm a student who built this with everything I had and honestly, I'm nervous hitting post on this. But I'd love your sharpest technical critiques: architecture, API design, edge cases I missed, anything. Don't hold back.
Here's the link to the main repository..
-> github.com/hiblaphp
https://redd.it/1sqifb0
@r_php
I'm a final-year IT student in the Philippines. Between classes, I spent months building a complete async I/O ecosystem for PHP from scratch. Today I'm releasing it as Public Beta and I'd love your brutal feedback.
It's called Hibla a Tagalog for "Fiber."
### Why I Built This
PHP was the first programming language I ever learned and loved. And for a long time, like a lot of PHP developers, I thought async was something that happened elsewhere in Node.js, in Go, in "serious" backend languages.
Then I found ReactPHP. It cracked something open in my brain. I realized async wasn't a language feature, it was an idea, and PHP was capable of it. I got obsessed. I wanted to understand it from the ground up, not just use a library, but build one so I'd truly know how it worked.
Hibla is what came out of that obsession. It started as a learning project. It turned into something I think is actually useful.
### What's in the Ecosystem
- Event Loop: Dual-driver (
stream_select + libuv), with Node.js-style execution phases- MySQL Driver: Pure-PHP binary protocol with side-channel
KILL QUERY cancellation and deterministic LRU statement caching. No orphaned queries.- HTTP Client: Async by default, full SSE support, and with full Http Mocking Simulator.
- Parallel: Erlang-style supervised worker pools that detect segfaults and OOMs and automatically respawn replacements
- Structured Concurrency: A strict 4-state Promise model that makes cleanup deterministic and safe
### The Core Idea: Fractal Concurrency
The design goal I'm most proud of: because every worker is "smart" and runs its own event loop, you can compose units of concurrency recursively. Parallel processes, async fibers, and raw I/O all interleave inside a single
Promise::all() seamlessly.$results = await(Promise::all([
$pool->run(fn() => cpu_heavy_work()), // Supervised pool task
parallel(fn() => sleep(1)), // One-off parallel process
async(function() { // Native Fiber, no spawn
$user = await(Http::get("https://api.example.com/user/1"));
return $user->json();
}),
parallel(function() { // "Hybrid" worker with its own Fibers
await(Promise::all([
async(fn() => await(delay(1))),
async(fn() => await(delay(1))),
]));
echo "Hybrid Done";
})
]));
// The entire block above completes in ~1 second
### Performance
To stress-test the foundation, I built a raw TCP responder using
SO_REUSEPORT across the worker pool. It hit 116,000+ RPS on 4 cores. A real HTTP server will be slower, but this proves the core has virtually zero overhead.### Standing on Giants
Hibla wouldn't exist without ReactPHP, whose work taught me how async PHP actually functions, and AmPHP, whose pioneering RFC work brought native Fibers to the PHP engine. I'm genuinely in their debt.
### Honest Caveats
- No dedicated docs site yet. Every package has a thorough README covering lifecycle events, trade-offs, and examples. It's not pretty, but it's complete.
- This is a Public Beta. I expect rough edges. That's exactly why I'm here.
I'm a student who built this with everything I had and honestly, I'm nervous hitting post on this. But I'd love your sharpest technical critiques: architecture, API design, edge cases I missed, anything. Don't hold back.
Here's the link to the main repository..
-> github.com/hiblaphp
https://redd.it/1sqifb0
@r_php
GitHub
GitHub - hiblaphp/hibla: Modern Asynchonous Runtime for PHP
Modern Asynchonous Runtime for PHP. Contribute to hiblaphp/hibla development by creating an account on GitHub.
Lerd, a local dev environment that works great with Symfony on Linux and macOS
https://geodro.github.io/lerd
https://redd.it/1sqinz5
@r_php
https://geodro.github.io/lerd
https://redd.it/1sqinz5
@r_php
Lerd
Lerd - Local PHP development for Linux
Open-source local PHP development environment for Linux. Automatic .test domains, PHP 8.1–8.5, rootless Podman, built-in Web UI. Works on Ubuntu, Fedora, Arch, and Debian.