Page 20 - Monthly Archives: December 2025
-
Maxim Mironjuk
-
December 06, 2025
A composer install in CI that sometimes installs different packages than expected, that redownloads 200 packages on every run, or that produces different dependencies on production than on staging: these are all solvable problems. This article explains how to run composer install in GitLab CI reproducibly, quickly and correctly.
-
Maxim Mironjuk
-
December 06, 2025
Once a user activates Windows high contrast mode, the operating system uncompromisingly replaces most of a website's colors with a limited system palette. With forced-colors, system color keywords and forced-color-adjust, an interface stays usable instead of letting borders, icons and states silently disappear.
-
Maxim Mironjuk
-
December 06, 2025
Assembling product pages in the browser with JavaScript risks empty Google previews, delayed indexing, and wasted crawl budget. This article compares server-side rendering, client-side rendering, and hybrid approaches purely from an SEO angle, and explains why Magento's server-rendered PHTML with Hyvä Theme holds a structural advantage over heavy single-page applications, especially for large catalogs with a limited rendering budget.
-
Maxim Mironjuk
-
December 05, 2025
Anyone who calls functions and constructors with many optional parameters knows the long lists of true, false and null whose meaning only becomes clear by looking at the signature. Named arguments solve this problem: the parameter name becomes visible right at the call site, order no longer matters, and unused defaults never have to be spelled out artificially.
-
Maxim Mironjuk
-
December 05, 2025
Badges, tags and chips look like trivial little building blocks in isolation, but once they show up in dozens of places across a larger application, a consistent system of sizes, color variants and clear interactivity rules decides whether the interface reads as tidy or chaotic. This article shows how to build a reusable badge and chip system with Tailwind CSS based on design tokens instead of colors hardcoded per case, with a clear split between static badges and interactive, removable chips.
-
Maxim Mironjuk
-
December 05, 2025
When DQL hits its limits because a native SQL function like JSON_EXTRACT or MATCH AGAINST is missing, a custom DQL function is often the cleaner solution than falling back entirely to native queries. Doctrine's FunctionNode API makes exactly that possible.
-
Maxim Mironjuk
-
December 05, 2025
A PHP attribute is just metadata until someone reads it. Only ReflectionAttribute makes attributes usable at runtime, by extracting arguments, creating real instances and filtering by type. Understanding how ReflectionAttribute handles getArguments(), newInstance() and repeatable attributes lets you build validation, routing and serialization systems that need no external configuration files at all.
-
Maxim Mironjuk
-
December 05, 2025
A deployment that finishes without errors is not automatically a deployment that actually works. The symlink was switched, the cache was cleared, but does the homepage load? Does checkout respond? Is the cache status green? Smoke tests close this gap and give the deployment process a functional conclusion instead of merely a technical one.
-
Maxim Mironjuk
-
December 04, 2025
As soon as an order is fulfilled from multiple sources or an item becomes available only later, multiple shipments end up attached to a single order. Magento models that cleanly on a technical level, but the pitfalls hide in the details: frontend display, partial refunds, and correctly mapping quantities to shipments. This article walks through the full workflow from the order item level down to the customer-facing view.
-
Maxim Mironjuk
-
December 04, 2025
Symfony 7 is the first major version since Symfony 5 to set PHP 8.2 as the minimum requirement, and it finally removes a range of long-deprecated APIs. At the same time, Symfony 7 brings genuine innovations: the ClockInterface standard, the AssetMapper as a webpack-free alternative, reworked DI attributes and a noticeably leaner core. This article shows what is actually new, what has been removed, and what the migration from 6.4 to 7 looks like.
-