Ash Allen Design
The RSS feed for the Ash Allen Design blog that contains articles about Laravel, PHP, and web development.
Formatting PHP Code with PHP CS Fixer
Read about how to use PHP CS Fixer to automate the formatting of your PHP code. We'll also explore how to use PHP CS Fixer in para...
Posted on 18 December 2025 | 12:00 am
The Difference Between ?: and ?? in PHP
Learn about the difference between the ternary operator (?:) and the null coalescing operator (??) in PHP. We'll also discuss a co...
Posted on 20 November 2025 | 12:00 am
Black Friday 2025 - Up to 50% off!
Get up to 50% off my books with Black Friday 2025 discounts. I am offering 30% off "Battle Ready Laravel" and "Consuming APIs in L...
Posted on 18 November 2025 | 12:00 am
Immutable and Mutable Dates in PHP
Read about the difference between immutable and mutable dates in PHP. We'll also look at a common gotcha I've experienced when usi...
Posted on 17 November 2025 | 12:00 am
Saloon vs Guzzle vs SDK vs Http Facade for Laravel API Integrations
Read about how to decide whether to use Salon, Guzzle, an SDK, or the Http Facade to build API integrations for your Laravel appli...
Posted on 13 November 2025 | 12:00 am
Email Utilities for Laravel v1.0 Released! 🎉
Read about my latest package: Email Utilities for Laravel. It's a small package which can be used to check and validate whether an...
Posted on 10 November 2025 | 12:00 am
Why I Deleted Social Media From My Phone
This year, I deleted social media from my phone. It started off as an experiment, but it has had a significant impact on improving...
Posted on 7 November 2025 | 12:00 am
Returning HTTP 404 Responses Instead of 403 for Unauthorised Access
Read about how to use HTTP 404 responses instead of HTTP 403 when a user is unauthorised to access a resource. We'll also discuss ...
Posted on 31 October 2025 | 12:00 am
Run PHPUnit and Pest Tests Without Vite Assets in Laravel
Read about how to use the "withoutVite" method in your Laravel apps to disable Vite during your PHPUnit and Pest tests.
...
Posted on 29 October 2025 | 12:00 am
The Dangers of Dynamic Method Calls in PHP
Read about the potential dangers of using dynamic method calls in PHP. We'll discuss the issues of using them, and potential alter...
Posted on 30 September 2025 | 12:00 am
The `match` Expression in PHP
Read about how to use the "match" expression in your PHP applications. We'll also discuss how to use them with PHP enums to write ...
Posted on 18 September 2025 | 12:00 am
Check If a String is Valid JSON in PHP
Read about how to use the "json_validate" function in PHP to check whether a string is valid JSON. We'll also discuss the differen...
Posted on 16 September 2025 | 12:00 am
A Guide to Serialization in PHP
Learn about serialization and how it works in PHP. We'll discuss serialized data formats, how to use serialization in PHP, and how...
Posted on 11 September 2025 | 12:00 am
Redactable Models v1.0 is Now Available!
Read about the new v1.0 release of the Redactable Models for Laravel package. The article covers the new "mass redaction" feature ...
Posted on 9 September 2025 | 12:00 am
Fetching Favicons using the DuckDuckGo Icons API in Laravel
Read about how to use the Favicon Fetcher package in your Laravel projects to retrieve websites' favicons via the DuckDuckGo API.
...
Posted on 3 September 2025 | 12:00 am
Create AI Agents in Laravel — The Simple Way
Read this guest post by Revaz Ghambarashvili that introduces us to his Laravel AI package, LarAgent.
Continue reading.....
Posted on 7 August 2025 | 12:00 am
The "never" Type in PHP
Learn about how to use the "never" type in PHP. We'll explore how to use it in your own code and look at a practical example of ho...
Posted on 20 June 2025 | 12:00 am
Check if a Signed URL is Valid in Laravel Tests
Read about how you can verify that a URL is a signed URL in your Laravel tests.
Continue reading...
Sub...
Posted on 18 June 2025 | 12:00 am
Pass a Query Builder to "whereIn" to Reduce Your DB Queries
Learn how to reduce your database queries by passing an instance of "Illuminate\Database\Query\Builder" to the "whereIn" method of...
Posted on 16 June 2025 | 12:00 am
Asymmetric Property Visibility in PHP
Learn about how to use asymmetric property visibility (added in PHP 8.4) to define different visibility levels for reading and wri...
Posted on 13 June 2025 | 12:00 am
Formatting Monetary Values in JavaScript
Learn how to format monetary values in JavaScript using the "toLocaleString" method and "Intl.NumberFormat" object.
Con...
Posted on 11 June 2025 | 12:00 am
Check Every Key Exists in a PHP Array with Arr::hasAll()
Read about how to use the "Arr::hasAll" method (added in Laravel 12.16) in your Laravel applications to ensure a given array conta...
Posted on 9 June 2025 | 12:00 am
Cast Laravel Model Fields to "Illuminate\Support\Uri" with "AsUri"
Read about how to use the new `Illuminate\Database\Eloquent\Casts\AsUri` cast (added in Laravel 12.17) to cast Laravel model prope...
Posted on 7 June 2025 | 12:00 am
A Guide to Custom Model Casts in Laravel
In this article, we'll dive into what "mutators", "accessors", and "casts" are and how to use them in your Laravel application. We...
Posted on 14 April 2025 | 12:00 am
Covariance and Contravariance in PHP
Learn about covariance and contravariance and how these concepts apply to your PHP code. We'll discuss these concepts in the conte...
Posted on 3 April 2025 | 12:00 am
Human-Readable File Sizes in Laravel (KB, MB, GB)
Learn how to convert file sizes in bytes to human-readable file sizes using the "Number::fileSize" method. For example, we'll show...
Posted on 2 April 2025 | 12:00 am
Microservices in Laravel
Learn about the strategies Gary Clarke uses to build scalable Laravel applications using microservices.
Continue readin...
Posted on 31 March 2025 | 12:00 am
Formatting and Spelling Ordinal Numbers in PHP and Laravel
Learn how to convert numbers to ordinal numbers (e.g., "1" to "1st") in PHP and Laravel apps. We'll also discuss how to spell out ...
Posted on 28 March 2025 | 12:00 am
How to Filter Profanity in Laravel with Squeaky
Read about how to use Squeaky, the new Laravel package by Jon Purvis, to validate input and ensure it doesn't contain profanity.
...
Posted on 4 March 2025 | 12:00 am
Preventing Destructive Commands from Running in Laravel
Read about how to use the Illuminate\\Console\\Prohibitable trait to prevent destructive commands from running in your Laravel app...
Posted on 17 February 2025 | 12:00 am
The Web Dev's Guide to Freelancing is Now Available! 🎉
The Web Dev's Guide to Freelancing is now available. It's packed full of tips, tricks, strategies, and guidance you can use to kic...
Posted on 14 January 2025 | 12:00 am
Access Route Model-Bound Models in Laravel Form Requests with "#[RouteParameter]"
Read about the #[RouteParameter] PHP attribute that you can use in Laravel to access route model-bound models in your form request...
Posted on 9 December 2024 | 12:00 am
Working with Images in Laravel Using Intervention Image
Learn about how to use Intervention Image (intervention/image) in your Laravel applications to resize, rotate, crop, and watermark...
Posted on 25 November 2024 | 12:00 am
Building Livewire Components with Volt
Read about how to use Volt to build Livewire components. We'll compare the functional API and class-based API and then look at how...
Posted on 28 October 2024 | 12:00 am
How to Set Up Your Mac for Web Design
In this guest article, we learn how to set up your Mac to get it ready for web design.
Continue reading...
...
Posted on 23 October 2024 | 12:00 am
A Guide to Laravel Pipelines
Learn about how to use the Pipeline class in Laravel to break complex workflows into smaller, isolated, focused processes. We'll t...
Posted on 30 September 2024 | 12:00 am
Freelance Web Dev Hub: Free Community for Web Developers
Join the growing community of freelance web developers on Discord. It's a great place to ask questions, get support, and hang out ...
Posted on 17 September 2024 | 12:00 am
Review: Advanced Inertia
Read my review of the fantastic "Advanced Inertia" book by Boris Lepikhin. I give a brief summary of what's covered, then give my ...
Posted on 12 September 2024 | 12:00 am
Free Tool: Freelance Rate Calculator
Use the free "Freelance Rate Calculator" tool to calculate an hourly or daily rate from an annual summary (and vice versa).
...
Posted on 9 September 2024 | 12:00 am
Limit Eager Loaded Relationships on Laravel Models
Learn how to limit the eager-loaded relationships on Laravel models. We'll also take a look at the underlying SQL queries that are...
Posted on 8 September 2024 | 12:00 am
The Web Dev's Guide to Freelancing (Pre-Order Now)
The Web Dev's Guide to Freelancing is now available for pre-orders. It's packed with strategies, tips, and tricks to kickstart you...
Posted on 2 September 2024 | 12:00 am
Transform Your Business Strategy with a Powerful SWOT Analysis
What is a SWOT Analysis and Why Is It Important? How to Create an Effective SWOT Analysis for Your Business. What Are the Common M...
Posted on 29 August 2024 | 12:00 am
Glimpse: Preview Your Laravel Pull Requests
Learn how to use Glimpse to build preview sites for your Laravel application's pull requests so you can review changes before merg...
Posted on 20 August 2024 | 12:00 am
PHP 8.4 Property Hooks
Read about the upcoming "property hooks" feature that will be added in PHP 8.4.
Continue reading...
Sub...
Posted on 18 August 2024 | 12:00 am
Find Outdated Composer Dependencies Using "composer outdated"
Read about how to use Composer's "outdated" command to find which of your PHP dependencies have updates available.
Cont...
Posted on 18 August 2024 | 12:00 am
New Array Functions in PHP 8.4
Read about how to use PHP 8.4's new "array_find", "array_find_key", "array_all", and "array_any" functions. The article also shows...
Posted on 18 August 2024 | 12:00 am
Ensuring Environment Variables Are Set in Laravel
Learn how to use the "Env::getOrFail" method in Laravel to ensure that environment variables have been set. We'll also take a look...
Posted on 12 August 2024 | 12:00 am
Profanify: Prevent Profanity in Your PHP Codebase
Learn about how to use the new "Profanify" package by Jon Purvis to prevent profanity in your PHP codebase
Continue rea...
Posted on 5 August 2024 | 12:00 am
Redact Model Fields in Laravel
Read about the new "ashallendesign/redactable-models" package that allows you to redact, obfuscate, and mask model data in your La...
Posted on 28 July 2024 | 12:00 am
Building a CLI with Laravel Prompts
Learn how to use Laravel Prompts to build awesome CLI applications. This article shows how to build a simple GitHub CLI using feat...
Posted on 23 July 2024 | 12:00 am