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
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
Reddit
From the laravel community on Reddit
Explore this post and more from the laravel community
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
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
Reddit
From the symfony community on Reddit
Explore this post and more from the symfony community
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;
For Windows with WSL
https://redd.it/1n0gz1g
@r_php
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
Reddit
From the laravel community on Reddit
Explore this post and more from the laravel community
Taylor Otwell: What 14 Years of Laravel Taught Me About Maintainability
https://maintainable.fm/episodes/taylor-otwell-what-14-years-of-laravel-taught-me-about-maintainability
https://redd.it/1n0koi1
@r_php
https://maintainable.fm/episodes/taylor-otwell-what-14-years-of-laravel-taught-me-about-maintainability
https://redd.it/1n0koi1
@r_php
Maintainable Software Podcast
Taylor Otwell: What 14 Years of Laravel Taught Me About Maintainability
Taylor Otwell looks back on 14 years of building and maintaining Laravel. From four stars on GitHub to a full-fledged ecosystem, he shares what it takes to design software that lasts—and why simple often wins.
How to Build a Reasoning AI Agent with LarAgent
https://blog.laragent.ai/how-to-build-a-reasoning-ai-agent-with-laragent/
https://redd.it/1n0mbao
@r_php
https://blog.laragent.ai/how-to-build-a-reasoning-ai-agent-with-laragent/
https://redd.it/1n0mbao
@r_php
LarAgent
How to Build a Reasoning AI Agent with LarAgent
Running AI models on your own laptop or even a phone sounds fun, right? 😊 In this guide, we’ll explore how to make a small and simple model a bit smarter by turning it into a reasoning agent using LarAgent in Laravel.
If you prefer to watch instead of reading…
If you prefer to watch instead of reading…
🚀 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
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
GitHub
GitHub - itxshakil/laravel-fast2sms: A robust and simple-to-use Laravel package for sending SMS messages via the Fast2sms API.…
A robust and simple-to-use Laravel package for sending SMS messages via the Fast2sms API. This package offers a powerful, fluent interface that simplifies sending different types of SMS, including ...
🚀 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
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
GitHub
GitHub - itxshakil/laravel-fast2sms: A robust and simple-to-use Laravel package for sending SMS messages via the Fast2sms API.…
A robust and simple-to-use Laravel package for sending SMS messages via the Fast2sms API. This package offers a powerful, fluent interface that simplifies sending different types of SMS, including ...
Taylor Otwell: What 14 Years of Laravel Taught Me About Maintainability
https://maintainable.fm/episodes/taylor-otwell-what-14-years-of-laravel-taught-me-about-maintainability
https://redd.it/1n0wmh6
@r_php
https://maintainable.fm/episodes/taylor-otwell-what-14-years-of-laravel-taught-me-about-maintainability
https://redd.it/1n0wmh6
@r_php
Maintainable Software Podcast
Taylor Otwell: What 14 Years of Laravel Taught Me About Maintainability
Taylor Otwell looks back on 14 years of building and maintaining Laravel. From four stars on GitHub to a full-fledged ecosystem, he shares what it takes to design software that lasts—and why simple often wins.
Anyone using ADR + AAA tests in PHP/Symfony ?
# ADR + AAA in Symfony
I’ve been experimenting with an ADR (Action–Domain–Response) + AAA pattern in Symfony, and I’m curious if anyone else is using this in production, and what your thoughts are.
The idea is pretty straightforward:
- **Action** = a super thin controller that only maps input, calls a handler, and returns a JsonResponse.
- **Domain** = a handler with a single `__invoke()` method, returning a pure domain object (like `OrderResult`). No JSON, no HTTP, just business logic.
- **Response** = the controller transforms the DTO into JSON with the right HTTP code.
This way, unit tests are written in a clean AAA style (Arrange–Act–Assert) directly on the output object, without parsing JSON or booting the full kernel.
---
## Short example
```php
final class OrderResult {
public function __construct(
public readonly bool $success,
public readonly string $message = '',
public readonly ?array $data = null,
) {}
}
final class CreateOrderHandler {
public function __construct(private readonly OrderRepository $orders) {}
public function __invoke(OrderInput $in): OrderResult {
if ($this->orders->exists($in->orderId)) return new OrderResult(false, 'exists');
$this->orders->create($in->orderId, $in->customerId, $in->amountCents);
return new OrderResult(true, '');
}
}
#[Route('/api/v1/orders', methods: ['POST'])]
public function __invoke(OrderInput $in, CreateOrderHandler $h): JsonResponse {
$r = $h($in);
return new JsonResponse($r, $r->success ? 200 : 400);
}
````
And the test (AAA):
```php
public function test_creates_when_not_exists(): void {
$repo = $this->createMock(OrderRepository::class);
$repo->method('exists')->willReturn(false);
$repo->expects($this->once())->method('create');
$res = (new CreateOrderHandler($repo))(new OrderInput('o1','c1',2500));
$this->assertTrue($res->success);
}
```
---
## What I like about this approach
* Controllers are ridiculously simple.
* Handlers are super easy to test (one input → one output).
* The same handler can be reused for REST, CLI, async jobs, etc.
---
Open to any feedback — success stories, horror stories, or alternatives you prefer.
https://redd.it/1n0y29b
@r_php
# ADR + AAA in Symfony
I’ve been experimenting with an ADR (Action–Domain–Response) + AAA pattern in Symfony, and I’m curious if anyone else is using this in production, and what your thoughts are.
The idea is pretty straightforward:
- **Action** = a super thin controller that only maps input, calls a handler, and returns a JsonResponse.
- **Domain** = a handler with a single `__invoke()` method, returning a pure domain object (like `OrderResult`). No JSON, no HTTP, just business logic.
- **Response** = the controller transforms the DTO into JSON with the right HTTP code.
This way, unit tests are written in a clean AAA style (Arrange–Act–Assert) directly on the output object, without parsing JSON or booting the full kernel.
---
## Short example
```php
final class OrderResult {
public function __construct(
public readonly bool $success,
public readonly string $message = '',
public readonly ?array $data = null,
) {}
}
final class CreateOrderHandler {
public function __construct(private readonly OrderRepository $orders) {}
public function __invoke(OrderInput $in): OrderResult {
if ($this->orders->exists($in->orderId)) return new OrderResult(false, 'exists');
$this->orders->create($in->orderId, $in->customerId, $in->amountCents);
return new OrderResult(true, '');
}
}
#[Route('/api/v1/orders', methods: ['POST'])]
public function __invoke(OrderInput $in, CreateOrderHandler $h): JsonResponse {
$r = $h($in);
return new JsonResponse($r, $r->success ? 200 : 400);
}
````
And the test (AAA):
```php
public function test_creates_when_not_exists(): void {
$repo = $this->createMock(OrderRepository::class);
$repo->method('exists')->willReturn(false);
$repo->expects($this->once())->method('create');
$res = (new CreateOrderHandler($repo))(new OrderInput('o1','c1',2500));
$this->assertTrue($res->success);
}
```
---
## What I like about this approach
* Controllers are ridiculously simple.
* Handlers are super easy to test (one input → one output).
* The same handler can be reused for REST, CLI, async jobs, etc.
---
Open to any feedback — success stories, horror stories, or alternatives you prefer.
https://redd.it/1n0y29b
@r_php
Reddit
From the PHP community on Reddit
Explore this post and more from the PHP community
A package to automatically listen to Paddle Webhooks in local development with Laravel Cashier
https://github.com/Einenlum/cashier-paddle-webhooks
https://redd.it/1n1a5q7
@r_php
https://github.com/Einenlum/cashier-paddle-webhooks
https://redd.it/1n1a5q7
@r_php
GitHub
GitHub - Einenlum/cashier-paddle-webhooks: A package to automatically listen to Paddle Webhooks in local development with Laravel…
A package to automatically listen to Paddle Webhooks in local development with Laravel Cashier - Einenlum/cashier-paddle-webhooks
Exploring our new PHP SDK, built using Saloon
https://ohdear.app/news-and-updates/exploring-our-new-php-sdk-built-using-saloon
https://redd.it/1n1bnda
@r_php
https://ohdear.app/news-and-updates/exploring-our-new-php-sdk-built-using-saloon
https://redd.it/1n1bnda
@r_php
ohdear.app
Exploring our new PHP SDK, built using Saloon
Today, we've launching a new PHP SDK package, which has been rebuilt from scratch using the wonderful Saloon library. Using our new SDK, you can easily use the entire Oh Dear API.
I built a Centralized MTurk HIT Catcher with PHP + Usernoscripts
I built a small tool to centralize MTurk HIT catching.
\- Paste multiple HIT set IDs into a PHP page
\- Toggle ON/OFF catching via a server
\- Usernoscripts connect to MTurk accounts and auto-accept HITs
https://redd.it/1n1aj56
@r_php
I built a small tool to centralize MTurk HIT catching.
\- Paste multiple HIT set IDs into a PHP page
\- Toggle ON/OFF catching via a server
\- Usernoscripts connect to MTurk accounts and auto-accept HITs
https://redd.it/1n1aj56
@r_php
Reddit
From the PHP community on Reddit
Explore this post and more from the PHP community
Retiring code optimizes resources
The article talks of reasons why software is abandoned.
Ultimately, it leads me to believe that abandoning code optimizes costs and allows CTOs to reallocate resources to more productive avenues.
What are your stories related to abandoned software?
https://getlaminas.org/blog/2025-08-27-how-the-laminas-project-determines-when-to-abandon-a-library.html
https://redd.it/1n1dq11
@r_php
The article talks of reasons why software is abandoned.
Ultimately, it leads me to believe that abandoning code optimizes costs and allows CTOs to reallocate resources to more productive avenues.
What are your stories related to abandoned software?
https://getlaminas.org/blog/2025-08-27-how-the-laminas-project-determines-when-to-abandon-a-library.html
https://redd.it/1n1dq11
@r_php
getlaminas.org
Laminas Project - How the Laminas Project Determines When to Abandon a Library
A free and open-source alternative to Spatie’s Ray to debug PHP applications
https://amitmerchant.com/free-open-source-alternative-spatie-ray-debug-php-applications/
https://redd.it/1n1gfl5
@r_php
https://amitmerchant.com/free-open-source-alternative-spatie-ray-debug-php-applications/
https://redd.it/1n1gfl5
@r_php
Amit Merchant - A blog on PHP, JavaScript, and more
A free and open-source alternative to Spatie’s Ray to debug PHP applications
If you are a PHP developer, you might have heard about or worked with Spatie’s Ray, a popular debugging tool that allows you to send debug information from your PHP applications to a desktop app for easy inspection at some point.
SymfonyCon Amsterdam 2025: Level up your skills with our workshops!
https://symfony.com/blog/symfonycon-amsterdam-2025-level-up-your-skills-with-our-workshops?utm_medium=feed&utm_source=Symfony%20Blog%20Feed
https://redd.it/1n1hnmh
@r_php
https://symfony.com/blog/symfonycon-amsterdam-2025-level-up-your-skills-with-our-workshops?utm_medium=feed&utm_source=Symfony%20Blog%20Feed
https://redd.it/1n1hnmh
@r_php
Symfony
SymfonyCon Amsterdam 2025: Level up your skills with our workshops! (Symfony Blog)
From deep dives into Symfony Workflows and APIs to hands-on sessions on security, architecture, and performance, there’s something for you. Thank you to everyone who submitted proposals, your ideas …
Supercharge Laravel Development and Apps with AI
https://nabilhassen.com/supercharge-laravel-development-and-apps-with-ai
https://redd.it/1n1mfs6
@r_php
https://nabilhassen.com/supercharge-laravel-development-and-apps-with-ai
https://redd.it/1n1mfs6
@r_php
Nabilhassen
Top Laravel AI Packages and Tools Guide
Explore top Laravel AI packages and tools for seamless AI integration, automation, and intelligent app development in your Laravel projects.
What if we improve the way developers are given access to databases
Adminer, DBeaver, MySQL Workbench, PhpMyAdmin, many developers use those tools every day to get access to databases. The problem ? They use the database credentials to connect to those tools.
What if we could improve that?
https://www.jaxon-php.org/blog/2025/08/what-if-we-improve-how-developers-access-databases.html
The article is also published on Medium.
https://medium.com/p/64cd7e2bef56
Note: built with PHP and Laravel.
https://redd.it/1n1skol
@r_php
Adminer, DBeaver, MySQL Workbench, PhpMyAdmin, many developers use those tools every day to get access to databases. The problem ? They use the database credentials to connect to those tools.
What if we could improve that?
https://www.jaxon-php.org/blog/2025/08/what-if-we-improve-how-developers-access-databases.html
The article is also published on Medium.
https://medium.com/p/64cd7e2bef56
Note: built with PHP and Laravel.
https://redd.it/1n1skol
@r_php
www.jaxon-php.org
What if we improve the way developers are given access to databases | Jaxon
Jaxon is an open source PHP library for easily creating Ajax web applications. It's a fork of the Xajax library.
I built a Centralized MTurk HIT Catcher with PHP + Usernoscripts
I built a small tool to centralize MTurk HIT catching.
\- Paste multiple HIT set IDs into a PHP page
\- Toggle ON/OFF catching via a server
\- Usernoscripts connect to MTurk accounts and auto-accept HITs
https://redd.it/1n23c6q
@r_php
I built a small tool to centralize MTurk HIT catching.
\- Paste multiple HIT set IDs into a PHP page
\- Toggle ON/OFF catching via a server
\- Usernoscripts connect to MTurk accounts and auto-accept HITs
https://redd.it/1n23c6q
@r_php
Reddit
From the PHP community on Reddit
Explore this post and more from the PHP community