Ripped off a bandaid today. Finally got around to properly tagging all PHPNomad packages, and setting all of them up in Packagist. Currently at 40 repositories, so I needed to get ahead of this before it got out of hand.
-
PHPNomad As A Static Site Generator
PHPNomad’s documentation site is now being built using…PHPNomad!
-
Change Datastore Methods to Use Generators
The current datastore interface returns arrays for collection methods which leads to memory and performance issues in REST implementations where N+1 queries are sometimes unavoidable. By changing these methods to use generators, we can process items as they arrive and maintain constant memory usage regardless of collection size, creating a more efficient implementation without sacrificing usability.
-
Restructuring Datastore Events in PHPNomad
We’re moving datastore events out of the database layer and into the datastore layer while also splitting operation traits into paired versions (with and without events) to give developers more control over event emission. This change breaks backward compatibility but creates a more flexible, truly nomadic system where developers can choose exactly which operations should emit events rather than being forced into a one-size-fits-all approach.
-
Remove Concrete Container Solution and Create Integrations With DI Libraries
I have come to realize it’s likely time to pivot away from PHPNomad’s simple container system, and embrace integrating with existing solutions, instead.
-
Feature Request: Make it possible to provide a class instance to binding transformers
Currently, event bindings are supported using a callback. Ready::class => [ [‘action’ => ‘init’, ‘transformer’ => function () { $ready = null; if (!self::$initRan) { $ready = new Ready(); self::$initRan = true; } return $ready; }] ], This tends to be overly terse, and require calls like this in cases where you want to encapsulate […]
-
Archive The Mutator Package
Why We’re Saying Goodbye to Mutators The Mutator package, while well-intentioned, has become a source of unnecessary complexity in our development workflow. What started as an attempt to create a flexible data transformation system has instead created a maze of interfaces, adapters, and callbacks that obscure the true intent of our code. The Problem with […]
-
Pitch: Remove Core Package Completely
The heart of the nomadic approach is that your code should be free to travel and adapt, like a digital nomad who can work from anywhere. The existence of a core package actually contradicts this fundamental principle. Here’s why: The solution is to break down the core package into focused, independent tools that developers can […]
-
-
Proposed New Facade Pattern That Supports Multiple Containers
Current Implementation PHPNomad currently uses a Facade pattern implemented through abstract classes to provide static access to services. Facades serve two primary purposes: The current implementation requires: Challenges Architectural Limitations Impact on PHPNomad’s Core Philosophy The current Facade implementation conflicts with PHPNomad’s goal of writing truly portable code. By relying on global state and single […]
-
PHPNomad As An MVC Framework
So PHPNomad can run as an MVC framework now. That’s neat. I needed a way to make Siren run outside of WordPress. After careful consideration, I decided the best route to take was to set up the last couple of packages needed to just make PHPNomad capable of running as its own MVC framework. I […]