PHP Reddit – Telegram
PHP Reddit
34 subscribers
289 photos
37 videos
24.8K 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/1mz10v3
@r_php
Issue with Webhook Signature Verification when Request Body Contains Arabic Characters

Hello,
I’m implementing webhook signature verification for Loyverse in PHP. The verification works correctly when the request body contains only English characters.

However, when the payload includes Arabic characters, the generated signature does not match the X-Loyverse-Signature header, and the verification fails.

Here’s the relevant code snippet:

 protected function verifySignature($headers) {
$rawBody = filegetcontents('php://input');
if (empty($headers'X-Loyverse-Signature')) {
return false;
}
$signatureHeader = $headers'X-Loyverse-Signature';
$computedSignature = hashhmac('sha1', $rawBody, $this->appSecret);
return hash
equals($computedSignature, $signatureHeader);
}



Any help or pointers would be hugely appreciated

Docs https://developer.loyverse.com/docs/#section/Webhooks-overview/Adding-webhook

https://redd.it/1mz1v8f
@r_php
Why isn’t PHP more popular?

Hey, i'm a pretty new dev (generally and even more at php specifically). I've first worked with bare php for a web dev class at uni and thought the language was pretty cool, coming from C. Now I'm learning Symfony at work so i'm practicing the oop aspect of php, and it seems that this is a very powerful language?

Title is a bit clickbait as i know php is still very popular in backend, but i'm wondering why isn’t it more recommended as a general programming language? Like in software dev or game dev, where it seems Java and C++/C# dominate the industry

Am I missing something? (performance issues? or maybe i'm just not aware of the actual popularity of php?)

https://redd.it/1mz5ch5
@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/1mzfoxx
@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/1mzim12
@r_php
🚀 [Release] Free & Enhanced Fork of inertiajs-tables-laravel-query-builder

Hey everyone 👋,

I recently forked the `inertiajs-tables-laravel-query-builder` package by Pascal Baljet. As some of you may know, the original project has been discontinued in favor of a paid version.
Rather than letting it fade away, I decided to maintain it and extend it with several new features.

# What’s New in my fork

* **Fluent API**: brand-new, intuitive API for configuring tables
* **CSV Export**: export filtered data straight to CSV
* **Custom Export Callbacks**: easily hook into the export process (Excel, JSON, XML, or any custom format)
* **Number Filters**: advanced numeric filtering with multiple comparison operators
* **Column Filters**: filter icons directly in column headers for quick access
* **Resizable Columns**: drag to resize table columns
* **Customizable Header & Cell Classes**: apply custom classes per column header or cell for styling flexibility

# Still Included (from the original)

* Auto-fill (`thead`/`tbody` auto-generation with custom cell support)
* Global search & per-field search
* Select filters
* Toggle columns
* Column sorting
* Pagination (Eloquent / API Resource / Simple / Cursor)
* Multiple tables in a single view
* Automatic query string updates (via Inertia replace)

So everything that made the original package great is still there — but now extended with a more modern and flexible API, plus export support and new customization options.

👉 [https://github.com/adesin-fr/inertiajs-tables-laravel-query-builder/](https://github.com/adesin-fr/inertiajs-tables-laravel-query-builder/)

Would love feedback, issues, or PRs from the community 🙌

https://redd.it/1mzjyxr
@r_php
Is PHP Finally Shedding Its “Legacy” Label in 2025?

For years, PHP has carried the “old and messy” reputation compared to modern languages like Node.js, Go, or Python. But with PHP 8+ introducing JIT, Fibers, attributes, union types, and significant performance boosts, many developers are starting to see it in a new light.

Big players like WordPress, Drupal, and Laravel still power massive portions of the web, and new frameworks are pushing PHP into areas beyond traditional CMS use. Some benchmarks even show PHP 8.3 competing closely with Node in performance-heavy workloads.

Do you think PHP has finally shaken off its “legacy” stigma? Or will the perception always linger, no matter how much the language evolves?

https://redd.it/1mzmqxj
@r_php
How I can inject extra logic queries on doctrine's schema:update

I want once I run:

php bin/console list doctrine:schema:update


Once an SQL query is generated, before printing it to generate extra SQL based on the already generated SQL. I am a situation in which the team work upon does not use db migrations (reasons uknown, no time to explain why)

I am into a situation in which I introduce upon entity a new column that is not null and unique:


I originally have this entity

declare(strict_types=1);

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;

#[ORM\Entity]
class Coupon
{
public const PREFIX = 'cou';
#[ORM\Id]
#[ORM\Column(type: 'integer')]
#[ORM\GeneratedValue(strategy: 'AUTO')]
private $id;

#[ORM\Column(type: 'string', nullable: true)]
private $name;

public function __construct()
{
}

}


And the underlying table has already soem records:


id | name
--- | ---
1 | hello
2 | value

And I want to introduce a unique not null column named token:


declare(strict_types=1);

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;

#[ORM\Entity]
class Coupon
{
public const PREFIX = 'cou';
#[ORM\Id]
#[ORM\Column(type: 'integer')]
#[ORM\GeneratedValue(strategy: 'AUTO')]
private $id;

#[ORM\Column(type: 'string', length: 255, unique: true)]
private string $token;

#[ORM\Column(type: 'string', nullable: true)]
private $name;

public function __construct()
{
}

}



But this need to be populated with a unique value before doctrine:schema:update generates the inique index.

Furthermore ci/cd pipeline that deploys it runs this command that updates the db:

php bin/console list doctrine:schema:update


Therefore I want this procedure to be automated. How can this be done? Is there a way to inject logic on doctrine:schema:update that generate extra sql on situations like this one?

https://redd.it/1mzump4
@r_php
How to use purely migrations for db setup on existing pre-populated dbs?

Currently I am using schema:update in order to setup the DB. I want to properly introduce the migrations and use only them for Db setup.


As a solution I thought to squash the migrations like this:

On Prod squash migrations, mark existing as skipped
Merge on staging and do a diff, mark both prod and staging ask skipped
On dev do the same


So I end up with 3 migrations:

One containing the initial prod changed (being the oldest ones)
Then one with staging
And one with dev changes


But is this a reccomended approachs what are the downsides?



https://redd.it/1mzzhan
@r_php
How to implement an APIPlatform filter that doesn't work with doctrine?

Hi,

I have an RRule (recurrence rule) field and want to add a between filter for it. Doctrine/Postgress don't support rrules so the general strategy is fetch all entries -> parse the rrule text field and check the occurences are inbetween the dates. But from the docs an API Filter just modifies the querybuilder but what I need is to filter the endresult after the data is already fetched from the db before it is send to the user.

How can this be done?

https://redd.it/1mzz2zo
@r_php
MVC Controllers: plural or singular?

Across MVC frameworks (e.g., CodeIgniter 4, Laravel, ...), what’s the common convention for controller names—plural (Users) or singular (User)? Why do you prefer it?

I like more singular cf. models. This survey seems to support this: https://www.reddit.com/r/laravel/s/K9qpqZFfQX

I never questioned this until my AI coding agent started using plurals and I thought to myself, wait a minute.


View Poll

https://redd.it/1n06rl1
@r_php
What CMS do you use?

I am curious to learn what CMS you use when you are building a content-heavy website? I have some experience with Symfony through Shopware 6 for work and a personal project (implementation of a third party API), but I have yet to build a website from scratch with it. I tried Sulu (its upcoming version 3 looks promising) and EasyAdmin. I like the latter since it integrates with your own entities, but I also tried Filament for Laravel, which is similar but miles ahead.

What do you use when the project requires one? Something custom? Or perhaps something not based on Symfony, when there's a lot of content to be edited?

https://redd.it/1n0f8du
@r_php
Configuring Laravel Boost MCP with GitHub Copilot in PHPStorm for DDEV on Windows WSL

Hey r/laravel,

Running Laravel 12 on DDEV in a Windows WSL/Mac setup, I had trouble with Laravel Boost's MCP server not connecting properly. I Googled for a bit and didn't find many resources on it, so I wanted to share my solution—it might assist some of you. Have a great day!

for Mac/Linux;

{
"servers": {
"my-laravel-project": {
"type": "stdio",
"command": "ddev",
"args": [
"exec",
"php",
"artisan",
"boost:mcp"
]
}
}
}


For Windows with WSL

{
"servers": {
"my-laravel-project": {
"type": "stdio",
"command": "wsl.exe",
"args": [
"-d",
"Ubuntu",
"--cd",
"/path/to/my-laravel-project",
"ddev",
"exec",
"php",
"artisan",
"boost:mcp"
]
}
}
}


https://redd.it/1n0gz1g
@r_php
🚀 Just released: Laravel Fast2SMS package – OTPs, DLT & Quick SMS made simple

Hey folks,

I built a Laravel package that makes sending SMS through Fast2SMS API way easier.

If you’ve ever dealt with raw SMS APIs, you know the pain — long payloads, DLT templates, sender IDs, juggling queues, etc. So I wrapped it all in a Laravel-fluent API that feels natural to work with.

# Features at a glance

Quick SMS
OTP support (super easy)
DLT template messages
Queue & scheduling support
Wallet balance check
Laravel Notifications integration

# Code example (it’s really this simple)

Fast2sms::otp('9999999999', '123456');

Or with a DLT template:

Fast2sms::dlt('9999999999', 'TEMPLATEID', ['John Doe'], 'SENDERID');

# 📦 Repo

👉 https://github.com/itxshakil/laravel-fast2sms

I’d love feedback, issues, or ideas for new features. And if you find it useful, a on GitHub would mean a lot 🙂

https://redd.it/1n0u66a
@r_php
🚀 Just released: Laravel Fast2SMS package – OTPs, DLT & Quick SMS made simple

Hey folks,

I built a Laravel package that makes sending SMS through Fast2SMS API way easier.

If you’ve ever dealt with raw SMS APIs, you know the pain — long payloads, DLT templates, sender IDs, juggling queues, etc. So I wrapped it all in a Laravel-fluent API that feels natural to work with.

# Features at a glance

Quick SMS
OTP support (super easy)
DLT template messages
Queue & scheduling support
Wallet balance check
Laravel Notifications integration

# Code example (it’s really this simple)

Fast2sms::otp('9999999999', '123456');


Or with a DLT template:

Fast2sms::dlt('9999999999', 'TEMPLATEID', ['John Doe'], 'SENDERID');


# 📦 Repo

👉 https://github.com/itxshakil/laravel-fast2sms

I’d love feedback, issues, or ideas for new features. And if you find it useful, a on GitHub would mean a lot 🙂

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