PHP Reddit – Telegram
PHP Reddit
34 subscribers
294 photos
39 videos
25K 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/1r5l9yg
@r_php
Kotlin-style List/Set/Map for PHP 8.4 - Mutable/Immutable, change tracking, key preservation, live map views, and generics support

Hello, so I've been working on a collection library for a few months (over the weekends), and I have finally decided to release it as the beta 0.1, as I consider the API to be relatively stable, and I would like to release a few 0.x versions during 2026 before committing to 1.0.

Docs: [https://noctud.dev](https://noctud.dev)
GitHub: **https://github.com/noctud/collection**

Why another collection library?

I've tried several existing libraries, but none of them solved the typical PHP headaches. Most are just array wrappers that provide a nicer API (which is often inconsistent). The main problems I wanted to solve were:

PHP arrays silently casting keys ("1" becomes int(1), true becomes 1).
You can't use objects as keys.
Filtering leaves gaps in indices.
There's no real API.
Enforcing array<string, something> is impossible if you don't control the data source.

I thought it would be a few days of work. It turned out to be a \~6 month project.. the more I worked on it, the more work I saw ahead.

What came out of it:

List, Set, Map - each with mutable and immutable variants
Key-preserving Maps - "1" stays string, true stays bool, objects work as keys
Full generics - PHPStan level 9, every element type flows through the entire chain
Mutable & Immutable - immutable methods return new instances marked with #\[NoDiscard\] (PHP 8.5 will warn on discarded results)
Change tracking - $set->tracked()->add('x')->changed tells you if the mutation actually did something
Lazy initialization - construct from closures, materialized on first access via PHP 8.4 lazy objects
Copy-on-write - converting between mutable/immutable is virtually free
Map views - $map->keys, $map->values, $map->entries are live collection objects, not plain arrays, and they share memory space
PhpStorm plugin - fixes generic type inference in callbacks and __invoke() autocomplete, I fixed a bug regarding \_\_invoke and added support for features not natively available.

Regarding PhpStorm bugs: I've reported several issues specifically related to static return types (most of them are Trait-related). As a result, I avoided using static completely to ensure method chaining autocomplete works correctly in the IDE. The only rule for third-party extensions is that Mutable collections (their mutable methods) must return $this. This is standard practice and doesn't necessarily require static enforcement, though this may change in the future.

Quick taste:

$map = mutableMapOf('a' => 1, 'b' => 2, 'c' => 3);
$map->values->sum(); // 6
$map->keys->sorted(); // ImmutableSet {'a', 'b', 'c'}
$map->filter(fn($v) => $v > 1)->keys; // Set {'b', 'c'}
$map'd' = 4;

$list = listOf(3, 1, 4, 1, 5);
$list->distinct()->sorted(); // 1, 3, 4, 5
$list->partition(fn($n) => $n > 2); // [3, 4, 5, 1, 1]

// StringMap enforces string keys even if constructed from array<int, string>
$map = stringMapOf('1' => 'a');
$map->keys; // Set {'1'}
$map->keys->firstOrNull(); // "1"

I don't want to make this post too long, I've tried to make a nice presentation on the docs homepage, and all the details and design decisions can be found in docs, there is even a dedicated page about the design, as well as an FAQ where I try to compare it to Java/Kotlin collections and explain why I made certain decisions.

It's built on top of Kotlin/Java foundations, with some nice adjustments - If the Java/Kotlin maintainers could rebuild their collections from scratch, I think it would look something like this, because Java "messed up" the
Mutable/Immutable split, Kotlin added immutable collections later as a library.

I plan to refactor the tests soon.. the Map tests were written early on, before StringMap and IntMap were fully implemented and now it doesn't click perfectly, and I also plan on adding Lazy collections as a Sequence later this year.

Feedback is welcome! This is the first public release and my first serious open source project. The target audience is mainly developers using high levels of static analysis, as well as library authors who could benefit from the interface-driven design (only interfaces are exposed; implementations are hidden and swappable).

Docs: https://noctud.dev
GitHub: https://github.com/noctud/collection
PhpStorm plugin: plugins.jetbrains.com/plugin/30173-noctud

https://redd.it/1r5oten
@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/1r5zn07
@r_php
Laravel Cloud down for anyone else?

Got a downtime alert (from a third-party monitor, so more than just my internet) for a site I host on Laravel Cloud. Can't get to https://cloud.laravel.com/ at all, either.

https://status.laravel.com/ doesn't have monitoring for the Cloud offering, it seems. Anyone else having trouble?

https://redd.it/1ra461v
@r_php
Curious where the community stands on this

With PHP 8.x adding typed properties, union types, stricter internal behavior, and deprecating things like dynamic properties, it feels like PHP has been intentionally moving toward stronger typing and predictability over the last several years.

Some folks argue PHP’s strength has always been being loosely typed and flexible, and that stricter behavior should stay optional. Others see the changes as necessary for maintainability, tooling, and large-scale systems.

For those working in modern PHP:
Do you feel PHP is (and should be) moving away from its old “loosely typed magic” toward more explicit, type-safe patterns? Or do you think this evolution is hurting what made PHP great?

https://redd.it/1r9ys21
@r_php
Symfony (no Mercure) + Python Realtime Stack for highly scalable and true E2E WebSocket apps

Over the years, I’ve been tinkering with WebSockets in PHP and Symfony and tried a lot of approaches.

Ratchet and event-loop servers like ReactPHP WS are easy to set up, but they struggle with non-blocking, large-scale connections. Big messages or lots of clients and everything blocks.

Other PHP solutions or extensions like Swoole, usually mix WebSocket handling with business logic, run monolithic PHP processes, and are tricky to scale horizontally. This also makes polyglot client support harder and adds complexity if you want fully self-hosted setups with real, future-proof end-to-end encryption.

Mercure and SSE only go server-to-client, so true bidirectional events require extra HTTP or webhook logic. Pusher and other SaaS solutions are convenient, but your data, presence, and GDPR compliance live externally.

None of these options scale reliably to hundreds of thousands of connections or give you full control over your data flow.

That’s why I built this stack.

Terminator (Symfony-first) lets you integrate WebSockets and webhooks quickly while keeping business logic fully in Symfony. It’s ideal for moderate realtime needs, but messages pass through Symfony, the payload is not blind in this mode.
Realtime-Core (Broker-first) is designed for high-scale use, with a stateless Python gateway and Redis/RabbitMQ streaming. Symfony acts as a producer and consumer. In this mode, the payload is blind in the gateway by design, enabling true end-to-end encryption. Unlike solutions such as Swoole, the gateway never sees plaintext. The architecture is horizontally scalable, polyglot-friendly, and future-proof.

The result is true bidirectional WebSockets, scalable connections, full Symfony integration, and complete control over your data - all fully self-hosted, without relying on SaaS.

What you guys think, thought this could be something reusable or did I miss something?

https://redd.it/1ra1tap
@r_php
I got tired of undocumented 3rd-party API changes breaking my apps, so I built Sentinel to passively detect JSON schema drift.

Hey everyone,

If you consume external REST APIs long enough, you know the pain: the provider silently drops a field, changes a string to an integer, or makes a previously required field optional. You usually only find out when your production app throws a null pointer exception or your DB rejects a type.

I built PHP Sentinel to solve this. It's a passive API contract monitor for PHP 8.3+ that sits in your HTTP client layer and watches the JSON coming back from the APIs you consume.

What it actually does: You don't write any schemas or rules by hand. Sentinel just silently observes the traffic.

1. Sampling: It watches the first X successful JSON responses for an endpoint.
2. Inference: It builds a probabilistically accurate JSON Schema (e.g., figuring out which fields are truly required vs which ones are just optional and happen to be missing sometimes).
3. Hardening: Once it hits the sample threshold (default 20), it locks the baseline schema.
4. Drift Detection: From then on, every new response is compared to the baseline in real-time. If the structure "drifts" (like a new field appears, or a required type changes), it dispatches an event and logs it.

Core features:

Zero-touch: Drop it into your PSR-18 client, Laravel `Http::` facade, or Symfony client and forget about it.
Smart Drift Rules: It knows that an optional field missing isn't drift, but a previously required field disappearing is a BREAKING change. A new undocumented field is just ADDITIVE.
Auto-healing: You can configure it to automatically "reharden" and build a new baseline after it reports a drift, so it adapts to legitimate API evolutions without you touching the code.
Framework Native: Comes with a Laravel ServiceProvider and a Symfony Bundle out of the box, plus an artisan/console CLI tool to inspect the inferred schemas manually.

Why I made it: Writing and maintaining OpenAPI specs for other people's APIs sucks. This is meant to be a passive safety net that gives you a Slack/log alert when a payload change happens, rather than digging through stack traces later.

It's fully unit-tested (Pest) and strictly typed (PHPStan Level 8).

Repo: https://github.com/malikad778/php-sentinel

I just pushed v1.0.3 and I'd love to hear what the community thinks. Are there specific edge cases in third-party API drift that you've been burned by? Any feedback on the architecture or inference engine would be awesome.

Thanks!

https://redd.it/1r9ze4l
@r_php
Why are so many packages designed exclusively for Laravel?

I have noticed that many packages that are being shared here lately are designed exclusively for Laravel. I know it is one of the largest (if not THE largest) framework for PHP, but does that mean that everyone should develop exclusively for it?

In my opinion every developer should look at the whole ecosystem around PHP and not just target one specific framework. IMO a framework agnostic package would be better as more people would benefit from it.

I don't want to link to any individual packages here because I don't want to blame the package maintainers. They have great ideas with their packages.

Of course, I don't have a solution for this. But I want to know if I am the only one who thinks this situation is going in the wrong direction or if my assumption is just plain wrong?

https://redd.it/1r8v229
@r_php
This media is not supported in your browser
VIEW IN TELEGRAM
I built this Laravel playground that runs completely in your browser (with no backend)

https://redd.it/1r8ezbx
@r_php
AuditTrailBundle v2 Released

Hi,

Thank you for your support and for showing interest in this project — I truly appreciate it.

I’ve put effort into improving the project by fixing code quality issues, strengthening security, and making it faster and more reliable.

Please note that this new version includes breaking changes, and I encourage you to upgrade to the latest version to benefit from these improvements.

You can review the changelog and benchmark results for more details.


cheers

https://redd.it/1rbeack
@r_php
Does anyone know any alternative for Laravel vscode extension? (A set of extensions is also fine)
https://redd.it/1rgxjsl
@r_php