PHP Records: In Userland
Some of you may remember my RFC on Records (https://wiki.php.net/rfc/records). After months of off-and-on R&D, I now present to you a general-use Records base-class: https://github.com/withinboredom/records
This library allows you to define and use records — albeit, with a bit of boilerplate. Records are value objects, meaning strict equality (===) is defined by value, not by reference. This is useful for unit types or custom scalar types (like "names", "users", or "ids").
Unfortunately, it is probably quite slow if you have a lot of records of a single type in memory (it uses an O(n) algorithm for interning due to being unable to access lower-level PHP internals). For most cases, it is probably still orders of magnitude faster than a database access. So, it should be fine.
https://redd.it/1l6p85a
@r_php
Some of you may remember my RFC on Records (https://wiki.php.net/rfc/records). After months of off-and-on R&D, I now present to you a general-use Records base-class: https://github.com/withinboredom/records
This library allows you to define and use records — albeit, with a bit of boilerplate. Records are value objects, meaning strict equality (===) is defined by value, not by reference. This is useful for unit types or custom scalar types (like "names", "users", or "ids").
Unfortunately, it is probably quite slow if you have a lot of records of a single type in memory (it uses an O(n) algorithm for interning due to being unable to access lower-level PHP internals). For most cases, it is probably still orders of magnitude faster than a database access. So, it should be fine.
https://redd.it/1l6p85a
@r_php
Just launched: Laravel AI Chat Starter Kit
I’ve just open-sourced a Laravel based AI chat starter kit built using:
* **Prism** (for AI/LLM integration)
* **Laravel Streams** (for native response streaming)
* **VILT stack** (Vue, Inertia, Laravel, Tailwind)
It comes with:
* Persistable chat history
* Model configuration
* Chat sharing
* Markdown & code rendering
[GitHub Repo](https://github.com/pushpak1300/ai-chat)
https://redd.it/1l6sdrz
@r_php
I’ve just open-sourced a Laravel based AI chat starter kit built using:
* **Prism** (for AI/LLM integration)
* **Laravel Streams** (for native response streaming)
* **VILT stack** (Vue, Inertia, Laravel, Tailwind)
It comes with:
* Persistable chat history
* Model configuration
* Chat sharing
* Markdown & code rendering
[GitHub Repo](https://github.com/pushpak1300/ai-chat)
https://redd.it/1l6sdrz
@r_php
GitHub
GitHub - pushpak1300/ai-chat: A modern AI chat starter kit built with Laravel, featuring real-time streaming responses using Prism…
A modern AI chat starter kit built with Laravel, featuring real-time streaming responses using Prism, Inertia.js, Vue.js, and TailwindCSS. - pushpak1300/ai-chat
The most simple way to generate pdf for invoice n report
Hi guys,
I remember using phpjasperxml ver 0.9 in symfony 2.7 and php 5 to generate pdf.
What s current option to generate pdf for symfony 7 and php 8?
I read that phpjasper and phpjasperxml r possible. I also read gutenbergbundle. Which will be recommended for simplicity and ease of use? The invoice and the report r simple pdf without any fancy stuff.
https://redd.it/1l6uup7
@r_php
Hi guys,
I remember using phpjasperxml ver 0.9 in symfony 2.7 and php 5 to generate pdf.
What s current option to generate pdf for symfony 7 and php 8?
I read that phpjasper and phpjasperxml r possible. I also read gutenbergbundle. Which will be recommended for simplicity and ease of use? The invoice and the report r simple pdf without any fancy stuff.
https://redd.it/1l6uup7
@r_php
Reddit
From the symfony community on Reddit
Explore this post and more from the symfony community
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/1l6uj36
@r_php
Feel free to ask any questions you think may not warrant a post. Asking for help here is also fine.
https://redd.it/1l6uj36
@r_php
Reddit
From the symfony community on Reddit
Explore this post and more from the symfony community
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/1l6xa3z
@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/1l6xa3z
@r_php
Reddit
From the PHP community on Reddit
Explore this post and more from the PHP community
Upgrading from php5.6.40 to php7.0
I am a JS developer who doesn't have any experience developing in php. I recently got tasked to upgrade a php application that runs php v5.6.40 with CodeIgniter(v3) to php v7 and eventually to v8.
I see this as an opportunity to learn php and may be asked for a good raise in the next appraisal cycle(in 6 months). Now, there is no timeline for this and I am the only person who has been working on this app for 1 year or so. I've only done a few changes like commenting out a few html components and reducing the DB calls and figuring out things when we get some error(mostly data related).
I don't understand how most parts work but I can google and it and get working.
I have setup the code in phpStorm and ran code inspection. The code has way too many errors and warnings but I am not concerned with all of them.
I ran the inspection for both v5.6 and v7.0. Only errors I am concerned with are the DEPRECATED ones such as "'mssql_pconnect' was removed in 7.0 PHP version". I have like 43 errors related to mssql and mysql.
Also, I am aware of the migration guide but it hard to follow that as things do no make a lot of sense to me.
Can someone point me to the right direction? It would be a huge help.
https://redd.it/1l6ywcr
@r_php
I am a JS developer who doesn't have any experience developing in php. I recently got tasked to upgrade a php application that runs php v5.6.40 with CodeIgniter(v3) to php v7 and eventually to v8.
I see this as an opportunity to learn php and may be asked for a good raise in the next appraisal cycle(in 6 months). Now, there is no timeline for this and I am the only person who has been working on this app for 1 year or so. I've only done a few changes like commenting out a few html components and reducing the DB calls and figuring out things when we get some error(mostly data related).
I don't understand how most parts work but I can google and it and get working.
I have setup the code in phpStorm and ran code inspection. The code has way too many errors and warnings but I am not concerned with all of them.
I ran the inspection for both v5.6 and v7.0. Only errors I am concerned with are the DEPRECATED ones such as "'mssql_pconnect' was removed in 7.0 PHP version". I have like 43 errors related to mssql and mysql.
Also, I am aware of the migration guide but it hard to follow that as things do no make a lot of sense to me.
Can someone point me to the right direction? It would be a huge help.
https://redd.it/1l6ywcr
@r_php
Reddit
From the PHP community on Reddit
Explore this post and more from the PHP community
Symfony Messenger standalone, getting retry to work
I've managed to get Symfony Messenger to work with my legacy system using RabbitMQ. It works like a charm for the most part, what I'm trying to get working now is the retry mechanism.
ChatGPT is some help but mostly it just leads me astray into the wrong alley.
This is the code I've got so far, what glue is missing to get the RetryStrategy into this setup?
class MessagesFactory {
public static function createMessageBus(): MessageBus {
$handlers = new HandlersLocator(
AbstractCommand::class => [new class {
public function __invoke(AbstractCommand $command) {
$command->execute();
}
},
]);
$transportLocator = new TransportLocator(
'async' => self::getTransport()
);
$sendersLocator = new SendersLocator(
AbstractCommand::class => ['async',
], $transportLocator);
// Build the bus with both middlewares
return new MessageBus(
new SendMessageMiddleware($sendersLocator),
new HandleMessageMiddleware($handlers),
);
}
public static function createWorker(): Worker {
return new Worker(
'async' => self::getTransport()
,
MessagesFactory::createMessageBus()
);
}
private static function getTransport($queue = 'messages') {
$connection = Connection::fromDsn(
RABBITMQDNS . $queue
);
// TODO: Where does this go??
$retryStrategy = new MultiplierRetryStrategy(
maxRetries: 3,
delayMilliseconds: 1000,
multiplier: 2.0,
maxDelayMilliseconds: 10000
);
$transport = new AmqpTransport($connection);
return $transport;
}
}
https://redd.it/1l70qjk
@r_php
I've managed to get Symfony Messenger to work with my legacy system using RabbitMQ. It works like a charm for the most part, what I'm trying to get working now is the retry mechanism.
ChatGPT is some help but mostly it just leads me astray into the wrong alley.
This is the code I've got so far, what glue is missing to get the RetryStrategy into this setup?
class MessagesFactory {
public static function createMessageBus(): MessageBus {
$handlers = new HandlersLocator(
AbstractCommand::class => [new class {
public function __invoke(AbstractCommand $command) {
$command->execute();
}
},
]);
$transportLocator = new TransportLocator(
'async' => self::getTransport()
);
$sendersLocator = new SendersLocator(
AbstractCommand::class => ['async',
], $transportLocator);
// Build the bus with both middlewares
return new MessageBus(
new SendMessageMiddleware($sendersLocator),
new HandleMessageMiddleware($handlers),
);
}
public static function createWorker(): Worker {
return new Worker(
'async' => self::getTransport()
,
MessagesFactory::createMessageBus()
);
}
private static function getTransport($queue = 'messages') {
$connection = Connection::fromDsn(
RABBITMQDNS . $queue
);
// TODO: Where does this go??
$retryStrategy = new MultiplierRetryStrategy(
maxRetries: 3,
delayMilliseconds: 1000,
multiplier: 2.0,
maxDelayMilliseconds: 10000
);
$transport = new AmqpTransport($connection);
return $transport;
}
}
https://redd.it/1l70qjk
@r_php
Reddit
From the symfony community on Reddit
Explore this post and more from the symfony community
I made a template for the FHA stack what do you guys think of this stack?, any suggestions are welcome
https://github.com/JianZcar/FHA-Stack
https://redd.it/1l71xiw
@r_php
https://github.com/JianZcar/FHA-Stack
https://redd.it/1l71xiw
@r_php
GitHub
GitHub - JianZcar/FHA-Stack: Flight(PHP), HTMX, Alpine
Flight(PHP), HTMX, Alpine. Contribute to JianZcar/FHA-Stack development by creating an account on GitHub.
Why You Really Need a Pre-Commit Script for Your PHP Projects
https://phpdeveloperstv.substack.com/p/why-you-really-need-a-pre-commit?r=pxz1i
https://redd.it/1l79kb3
@r_php
https://phpdeveloperstv.substack.com/p/why-you-really-need-a-pre-commit?r=pxz1i
https://redd.it/1l79kb3
@r_php
Substack
Why You Really Need a Pre-Commit Script for Your PHP Projects
Despite what we tell others we’ve all pushed something to production we probably shouldn’t have.
Should Laravel adopt OpenTelemetry?
OpenTelemetry (OTel) is quickly becoming the standard for observability — helping apps generate consistent data across Metrics, Events, Logs, and Traces (MELT). It allows you to track what’s happening across your system, end-to-end, and send that data to any platform (Grafana, Datadog, Honeycomb, etc.).
Laravel already gives us Telescope, which is a great tool for introspecting the application — logging requests, jobs, queries, exceptions, and more. Now, with Laravel Nightwatch on the way.
Isn’t this the perfect moment to adopt OpenTelemetry in the Laravel ecosystem?
Imagine if the framework could generate MELT data natively — and send it to Telescope, Nightwatch, or any OpenTelemetry-compatible backend without choosing one over the other.
I know Spatie is working on this direction too, which is exciting.
But should this become a first-class concern at the framework level?
What do you think? Are you using OpenTelemetry already?
Would love to hear your thoughts.
https://redd.it/1l7sde6
@r_php
OpenTelemetry (OTel) is quickly becoming the standard for observability — helping apps generate consistent data across Metrics, Events, Logs, and Traces (MELT). It allows you to track what’s happening across your system, end-to-end, and send that data to any platform (Grafana, Datadog, Honeycomb, etc.).
Laravel already gives us Telescope, which is a great tool for introspecting the application — logging requests, jobs, queries, exceptions, and more. Now, with Laravel Nightwatch on the way.
Isn’t this the perfect moment to adopt OpenTelemetry in the Laravel ecosystem?
Imagine if the framework could generate MELT data natively — and send it to Telescope, Nightwatch, or any OpenTelemetry-compatible backend without choosing one over the other.
I know Spatie is working on this direction too, which is exciting.
But should this become a first-class concern at the framework level?
What do you think? Are you using OpenTelemetry already?
Would love to hear your thoughts.
https://redd.it/1l7sde6
@r_php
Reddit
From the laravel community on Reddit
Explore this post and more from the laravel community
How to Create a RAG Agent with Neuron ADK for PHP
https://inspector.dev/how-to-create-a-rag-agent-with-neuron-adk-for-php/
https://redd.it/1l7sx46
@r_php
https://inspector.dev/how-to-create-a-rag-agent-with-neuron-adk-for-php/
https://redd.it/1l7sx46
@r_php
How to Create a RAG Agent with Neuron ADK for PHP
https://inspector.dev/how-to-create-a-rag-agent-with-neuron-adk-for-php/
https://redd.it/1l7swsp
@r_php
https://inspector.dev/how-to-create-a-rag-agent-with-neuron-adk-for-php/
https://redd.it/1l7swsp
@r_php
30 years of PHP: FrankenPHP is now part of the PHP organisation
https://thephp.foundation/blog/2025/06/08/php-30/
https://redd.it/1l7v0df
@r_php
https://thephp.foundation/blog/2025/06/08/php-30/
https://redd.it/1l7v0df
@r_php
thephp.foundation
30 years of PHP: FrankenPHP is now part of the PHP organisation
The PHP Foundation — Supporting, Advancing, and Developing the PHP Language
Laravel 12 + Vue JS + Spatie Roles & Permissions
https://youtu.be/mRyHhb6YlkA?si=G8-A3uR382BrQiUe
https://redd.it/1l7wvft
@r_php
https://youtu.be/mRyHhb6YlkA?si=G8-A3uR382BrQiUe
https://redd.it/1l7wvft
@r_php
YouTube
Laravel 12 + Vue JS + Spatie Roles & Permissions
In this video, learn how to integrate Spatie Roles & Permissions in a Laravel 12 + Vue JS app using the Laravel Starter Kit (Breeze or Jetstream).
Perfect for building admin dashboards, multi-role apps, and secure user access systems. 🔒
✅ What You'll Learn:…
Perfect for building admin dashboards, multi-role apps, and secure user access systems. 🔒
✅ What You'll Learn:…
Managing the Memory Usage of the Laravel Eloquent Identity Map | ollieread - PHP and Laravel expert
https://ollieread.com/articles/managing-the-memory-usage-of-the-laravel-eloquent-identity-map
https://redd.it/1l7zbj5
@r_php
https://ollieread.com/articles/managing-the-memory-usage-of-the-laravel-eloquent-identity-map
https://redd.it/1l7zbj5
@r_php
ollieread - PHP and Laravel expert
Managing the Memory Usage of the Laravel Eloquent Identity Map | ollieread - PHP and Laravel expert
In my previous article, I introduced a minimal identity map for Laravel Eloquent. In this follow-up, I'll show you how to better manage the memory usage of the identity map, and prevent memory leaking issues for particularly heavy processes, including Laravel…
How PhpStorm Helps Maintain PHP Open-Source Projects: Interviews and Real-World Examples
https://blog.jetbrains.com/blog/2025/06/10/how-phpstorm-helps-maintain-php-open-source-projects-interviews-and-real-world-examples/
https://redd.it/1l820nk
@r_php
https://blog.jetbrains.com/blog/2025/06/10/how-phpstorm-helps-maintain-php-open-source-projects-interviews-and-real-world-examples/
https://redd.it/1l820nk
@r_php
Reddit
From the PHP community on Reddit: How PhpStorm Helps Maintain PHP Open-Source Projects: Interviews and Real-World Examples
Explore this post and more from the PHP community
I built an open source Fakespot replacement with Laravel
https://shift8web.ca/from-fakespot-to-null-fake-navigating-the-evolving-landscape-of-fake-reviews/
https://redd.it/1l86qzj
@r_php
https://shift8web.ca/from-fakespot-to-null-fake-navigating-the-evolving-landscape-of-fake-reviews/
https://redd.it/1l86qzj
@r_php
Uri-Interop Standard Now Stable
https://pmjones.io/post/2025/06/10/uri-interop-standard-now-stable/
https://redd.it/1l8gh0u
@r_php
https://pmjones.io/post/2025/06/10/uri-interop-standard-now-stable/
https://redd.it/1l8gh0u
@r_php
composer-attribute-collector running as a command
I made some changes to my attribute collector for Composer to avoid issues with incompatibilities between Composer and the application dependencies; for example, the PSR logger with incompatible signatures. I have a branch ready, and I'm looking for brave souls to test the changes. Thanks for your help!
https://github.com/olvlvl/composer-attribute-collector/pull/35
https://redd.it/1l8o7h0
@r_php
I made some changes to my attribute collector for Composer to avoid issues with incompatibilities between Composer and the application dependencies; for example, the PSR logger with incompatible signatures. I have a branch ready, and I'm looking for brave souls to test the changes. Thanks for your help!
https://github.com/olvlvl/composer-attribute-collector/pull/35
https://redd.it/1l8o7h0
@r_php
GitHub
Run the collector as a command by olvlvl · Pull Request #35 · olvlvl/composer-attribute-collector
Running the collector within Composer's realm is causing issues when the interfaces used by Composer are incompatible with those used by the codebase, as reported by #31 and #32. With these...
Anyone using bun in production?
Virtually all my projects are built with inertia and react, just curious if anyone has made the switch to bun and found it to be a smooth switch from node.
https://redd.it/1l8rqn2
@r_php
Virtually all my projects are built with inertia and react, just curious if anyone has made the switch to bun and found it to be a smooth switch from node.
https://redd.it/1l8rqn2
@r_php
Reddit
From the laravel community on Reddit
Explore this post and more from the laravel community
Anyone can help me with PHP routing, using MVC architecture?
Hello, so im creating a budget travel planner system using PHP PDO, in mvc architecture form. I've almost finished most of the functions and have been testing with dummy views but now I recieved the frontend from my group member and need it to link it.
However, im really struggling with that and the routing part, so can anyone help me with this, please?
for example, this is my user controller :
and this is my index php file for the routing:
However, it doesnt work and I don't understand what's going wrong.
I only have about 4 days left until we need to run it and do the testing 😭😭 thank you!!
https://redd.it/1l8vtek
@r_php
Hello, so im creating a budget travel planner system using PHP PDO, in mvc architecture form. I've almost finished most of the functions and have been testing with dummy views but now I recieved the frontend from my group member and need it to link it.
However, im really struggling with that and the routing part, so can anyone help me with this, please?
for example, this is my user controller :
<?php
session_start();
require __DIR__ . '/../models/User.php';
include_once __DIR__ . '/../helpers/session_helper.php';
class UserController {
private $userModel;
public function __construct(){
$this->userModel = new User;
// $this->userModel = new User($pdo);
}
// register user
public function registerUser(){
// if register button was clicked in the form // LOOK
if (($_SERVER['REQUEST_METHOD'] == 'POST') && isset($_POST['registerUser']))
{
// lets sanitize the data to remove any unneccesary data
$firstName = filter_var(trim($_POST['firstName']), FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$lastName = filter_var(trim($_POST['lastName']), FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$contactNumber = filter_var(trim($_POST['contactNumber']), FILTER_SANITIZE_NUMBER_INT);
$email = filter_var(trim($_POST['email']), FILTER_SANITIZE_EMAIL);
$password = filter_var(trim($_POST['password']));
// $confirmPassword = trim($_POST['confirmPassword']);
// if ($password !== $confirmPassword) {
// flash("register", "Passwords do not match.");
// redirect("../signup.php");
// }
// initalize data
$data = [
'name' => $firstName . ' ' . $lastName,
'contact_number' => $contactNumber,
'email' => $email,
'password' => password_hash($password, PASSWORD_DEFAULT),
'role' => 'user'
];
// validate the inputs before saving
if($this-> userModel-> registerUser($data)){
flash("register", "The account was created sucessfully!");
}else{
die("Something went wrong");
}
}
}
and this is my index php file for the routing:
<?php
require_once __DIR__ . '/Connection.php';
require_once __DIR__ . '/controllers/UserController.php';
$pdo = new Connection;
// $pdo = (new Connection())->pdo;
$controller = new UserController;
// routing for user registration
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['registerUser']))
{
$controller ->registerUser();
}
else {
echo "Error";
}
?>
However, it doesnt work and I don't understand what's going wrong.
I only have about 4 days left until we need to run it and do the testing 😭😭 thank you!!
https://redd.it/1l8vtek
@r_php
Reddit
From the PHP community on Reddit
Explore this post and more from the PHP community