A few notes about the frontend of the renewed spatie.be original

by Willem Van Bockstal – 5 minute read

Before we moved in to our new offices in 2014, we quickly set up a temporary one-page website, initially only in Dutch. It lasted for 4 years and bursted out of its frames ever since, because… hmm … no priority, no time. A new site was like a running joke for a long time, until Laracon US 2018…

Read more

Join 9,500+ smart developers

Get my monthly newsletter with what I learn from running Spatie, building Oh Dear, and maintaining 300+ open source packages. Practical takes on Laravel, PHP, and AI that you can actually use.

No spam. Unsubscribe anytime. You can also follow me on X.

A new website for Spatie: backend highlights original

by Freek Van der Herten – 7 minute read

For the first time in 4 years we completely redesigned our company website. We launched it today. The site is a simple Laravel app with some technical niceties. True to form we also open sourced the app, you can find the code in this repo on GitHub. In this blogpost I'd like you to give you a tour…

Read more

Take a look into your Laravel views

github.com

Marcel Pociot, serial open source creator, released another cool Laravel package.

When your Laravel project grows, so do the Laravel views. Sometimes it might be hard to figure out, which part of the output HTML was rendered using which template. With this package, you can take a peek into your Laravel views and find out which template is responsible for which part of the output HTML.

Read more [github.com]

A new security header: Feature Policy

scotthelme.co.uk

Scott Helme, creator of both securityheaders.com and report-uri.com introduces a header to enable or disable certain APIs on a webpage.

Feature Policy is being created to allow site owners to enable and disable certain web platform features on their own pages and those they embed. Being able to restrict the features your site can use is really nice but being able to restrict features that sites you embed can use is an even better protection to have.

Read more [scotthelme.co.uk]

Objects should be constructed in one go

matthiasnoback.nl

In another cool blogpost, Matthias Noback explains a few best practices around newing up objects, illustrated with some great examples.

Consider the following rule: "When you create an object, it should be complete, consistent and valid in one go." It is derived from the more general principle that it should not be possible for an object to exist in an inconsistent state. I think this is a very important rule, one that will gradually lead everyone from the swamps of those dreaded "anemic" domain models. However, the question still remains: what does all of this mean?

Read more [matthiasnoback.nl]

Benchmarks on sorting and serializing associative arrays vs classes in PHP

steemit.com

Larry Garfield, director of developer experience at Platform.sh, published some interesting numbers on arrays vs classes.

The first thing we can conclude is that if the one and only thing you care about is serialization/deserialization performance, associative arrays still win. They're the most time efficient by more than 50%, and the most space efficient by up to 20%. The second thing we can conclude is that stdClass should be used basically never. It's slower and more memory intensive than arrays in every circumstance. Just don't go there.

Read more [steemit.com]

Using Laravel Mailables and Notifications as Event Listeners

themsaid.com

In an older post on his blog Mohammed Said, Laravel Employee #1, shares a cool trick on how to avoid having to create an event listener.

Instead of having to create a class for the listener and another for the notification/mailable, wouldn't it be cool if we can register the Notification/Mailable as an event listener? ... While some may consider this an anti-SRP hack I think it's a pretty neat implementation that you can use in your application to prevent creating an extra listener class, your call :)

Read more [themsaid.com]

A modern text-based web browser in your terminal

Browsh is a small browser that you can run inside your terminal. If you don't want to install it locally, you can test is out by ssh'ing to it.

ssh brow.sh

Here's a screenshot of the https://www.brow.sh/ running in Browsh.

Browsh homepage

How cool is that! I don't see myself using this as my main browser soon, but it sure is a pretty cool project. It goes without saying that you should not type any sensitive data while using it via ssh.

Read more

A short introduction to laravel-event-projector original

by Freek Van der Herten – 1 minute read

The last few months I've been working on a package called laravel-event-projector. This package aims to be a simple and very pragmatic way to get started with event sourcing in Laravel. Ahead of it's release, which will happen in a few days, I've recorded a small video introduction. You can find the…

Read more

How to rid your database of PHP class names in Eloquent's Polymorphic tables

josephsilber.com

Joseph Silber, a very active Laravel contributor, has written a new blogpost on morph maps, a feature to decouple your database from your model class names.

Polymorphic relations let you set up a relationship between many different model types, without the need for extra tables. This works by storing the "morphable type" (explained below) in the database, in addition to the morphable type's ID. By default, the morphable type stored in the database is the model's full class name. While this works, it tightly couples your database to your PHP application. Let's look at how we can instruct Eloquent to use more generic values for these morphable types.

Read more [josephsilber.com]