Page 161 - Mironsoft Blog
-
Maxim Mironjuk
-
October 01, 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.
-
Maxim Mironjuk
-
October 01, 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.
-
Maxim Mironjuk
-
October 01, 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.
-
Maxim Mironjuk
-
October 01, 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.
-
Maxim Mironjuk
-
October 01, 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.
-
Maxim Mironjuk
-
October 01, 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.
-
Maxim Mironjuk
-
October 01, 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.
-
Maxim Mironjuk
-
October 01, 2025
TypeScript ships several minor releases a year, each bringing tangible improvements to type safety and developer productivity. This article puts the most important TypeScript 5.x additions in context, including standardized decorators, const type parameters, and the satisfies operator, and shows with concrete before-and-after examples which features actually make a difference in daily work.
-
Maxim Mironjuk
-
September 30, 2025
ARG and ENV look interchangeable at first glance, both set a named value after all. Anyone who does not know the difference in visibility, runtime behavior, and multi-stage build scoping easily ends up with images that produce unexpected values at runtime or, worse, accidentally bake credentials permanently into an image layer.
-
Maxim Mironjuk
-
September 30, 2025
App Clips on iOS and Instant Apps on Android deliver small, tightly scoped parts of an app, triggered by a QR code or link, with no full installation required. This article covers architecture, size limits, and the practical feasibility with React Native.
-