Archive: 2025-10 | Page 23
Archive: October 2025
-
Oct 2, 2025
When the pipeline is not fast enough, teams fall back on manual deployments. That is acceptable, but only if it produces complete documentation, a rollback path is prepared in advance, and the hotfix is cleanly folded back into the normal process afterward.
-
Oct 2, 2025
Many PHP APIs call themselves REST but are, on closer inspection, RPC calls wrapped in HTTP: one POST endpoint per action, always status code 200 regardless of outcome. Genuine RESTful API design in PHP requires resources instead of actions, correctly applied HTTP verbs, deliberate status codes and idempotency where it is expected, and none of that needs a framework to implement cleanly.
-
Oct 2, 2025
A release artifact that has been altered without anyone noticing is more dangerous than a build that visibly fails. SHA256 checksums, GPG signatures and automated verification steps in the GitLab pipeline close this silent attack surface for Magento deployments.
-
Oct 1, 2025
PHP arrays only accept integers and strings as keys, objects are silently rejected with an error or coerced into a useless string. SplObjectStorage closes that gap by allowing objects as keys, compared by identity. Using object metadata and graph traversal as examples, we show where this actually helps in day-to-day code.
-
Oct 1, 2025
Anyone who implements swatches for configurable products as mere color boxes without a well thought out state model ends up with price, gallery, and stock bugs on the product detail page. A clean Alpine.js state machine, a proper ViewModel, and a GraphQL-ready data model make Hyvä swatches robust, accessible, and cache friendly at the same time.
-
Oct 1, 2025
Viewport breakpoints are not enough: components need to react to their own size, not to the window width. x-resize brings the ResizeObserver into Alpine.js declaratively, without a single line of boilerplate code.
-
Oct 1, 2025
A leap from PHP 5.6 straight to PHP 8 skips four major versions, each with its own breaking changes, removed functions and altered error handling. This article shows a multi-stage migration strategy with intermediate versions, a compatibility layer and a test safety net, instead of a risky single-step jump.
-
Oct 1, 2025
ROWS and RANGE both define a window frame, but they do it in fundamentally different ways: ROWS counts physical row positions, RANGE looks at logical value ranges of the sort column. With unique sort values, both return the same result, but with ties in the sort column, ROWS and RANGE can produce different numbers for the same query.
-
Oct 1, 2025
Zero downtime is promised often and defined rarely. This article explains honestly where a symlink switch truly works without any outage, and where database migrations unavoidably require a short maintenance window.
-
Oct 1, 2025
Testability is not created when the tests are written, but when the classes themselves are designed. Injecting dependencies, isolating side effects, and avoiding static calls builds code that can be tested without detours, no matter which test framework ends up being used. This article shows the design principles behind testable PHP code, beyond assertions and test runners.