Engineering,
taught
&
leadership,
practised.
I'm Steven — CTO at Digitonic, a PHP engineer since 2010 and a keen golfer with a terrible handicap. This is where I write it all down.
Latest from the journal
PHP 8.4: Chain Methods on new Without the Extra Parentheses
PHP 8.4 drops the wrapper parentheses around new, so (new Foo())->bar() becomes new Foo()->bar(). Here's the one rule to remember and the precedence traps to avoid.
Laravel AI SDK Tool Calling: Let the Model Run Your PHP
Give a Laravel AI agent real abilities: typed PHP tools the model can call to look up data, with enum-constrained inputs and a hard cap on runaway loops.
Tailwind Subgrid: Align Card Grids to a Parent Grid
Stop hard-coding card heights or measuring them with JavaScript. Tailwind's grid-rows-subgrid lets cards inherit the parent grid's rows so titles, bodies, and footers align across the whole row.