<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Matthew Price — Web Development Tips &amp; Tricks</title><description>Web development tips and tricks.</description><link>https://matthewaprice.com/</link><language>en-us</language><item><title>A Composable PHP Component System</title><link>https://matthewaprice.com/articles/php-component-system/</link><guid isPermaLink="true">https://matthewaprice.com/articles/php-component-system/</guid><description>React taught me to think in components with typed props. This is how I get the same thing in plain PHP: a tiny abstract base, a typed options object per component, and a static factory that renders.</description><pubDate>Thu, 23 Jul 2026 00:00:00 GMT</pubDate></item><item><title>A Tight Content Security Policy for Laravel in One Middleware</title><link>https://matthewaprice.com/articles/laravel-csp-middleware/</link><guid isPermaLink="true">https://matthewaprice.com/articles/laravel-csp-middleware/</guid><description>A strict Content Security Policy sounds like a project. In Laravel it is one middleware and a handful of directives. Here is the whole thing, why each line is there, and how to keep it from breaking local dev.</description><pubDate>Tue, 21 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Building an ORM to Understand the Ones I Use Every Day</title><link>https://matthewaprice.com/articles/reflection-based-orm/</link><guid isPermaLink="true">https://matthewaprice.com/articles/reflection-based-orm/</guid><description>Build the tools you rely on. Not to replace them, but to understand them. Here&apos;s how working through an ORM decision turned Doctrine&apos;s typed fields and Eloquent&apos;s casts from magic I used into choices I could actually read.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Encrypted Form Tokens: Hiding Server-Side Dispatch from the HTML</title><link>https://matthewaprice.com/articles/encrypted-form-tokens/</link><guid isPermaLink="true">https://matthewaprice.com/articles/encrypted-form-tokens/</guid><description>Most CSRF tokens only prove a request came from your form. This article explains how to take form tokens further: they can carry the processor class and method to run, so the URL becomes a hint and the token becomes the source of truth.</description><pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Tokenize Before You Prompt:  LLM Insights Without Exposing Data</title><link>https://matthewaprice.com/articles/tokenize-before-you-prompt/</link><guid isPermaLink="true">https://matthewaprice.com/articles/tokenize-before-you-prompt/</guid><description>Swap data for abstract tokens before calling an LLM, then detokenize the response. You get AI-powered insights while the real data never leaves your server.</description><pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Typed &amp; Testable Views in PHP</title><link>https://matthewaprice.com/articles/typed-and-testable-views-in-php/</link><guid isPermaLink="true">https://matthewaprice.com/articles/typed-and-testable-views-in-php/</guid><description>Replace loose template variables with typed PHP view classes that enforce contracts between controllers and views, compose like React components, and unit test without booting a framework.</description><pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate></item><item><title>A New Codebase Every Morning</title><link>https://matthewaprice.com/articles/a-new-codebase-every-morning/</link><guid isPermaLink="true">https://matthewaprice.com/articles/a-new-codebase-every-morning/</guid><description>AI can build a feature in an afternoon that used to take a week.  That&apos;s great, but that speed comes with a cost, and it is not just in the code.</description><pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate></item></channel></rss>