PHP: Guides and Practical Know-how | Page 18 | mironsoft Blog
PHP
-
Sep 10, 2025
Without a deliberate API versioning strategy, every breaking change turns into a crisis meeting with external integrators. In PHP, three established approaches are available: a version number in the URI, a dedicated version header, or versioning through the Accept header via content negotiation. Which API versioning approach fits depends on your customer structure, release rhythm and the number of versions supported in parallel.
-
Sep 10, 2025
The parallel extension brings real multithreading to PHP: Runtime, Future and Channel create isolated operating system threads instead of cooperative concurrency. Anyone who understands the strict data isolation between threads and knows the limits of closures and autoloading can noticeably speed up CPU intensive tasks without switching to external extensions like Swoole.
-
Sep 7, 2025
Applying unserialize() to untrusted data is one of the most dangerous patterns in PHP applications. Gadget chains made of seemingly harmless classes enable remote code execution merely by reconstructing an object. JSON, allowed_classes and signed payloads reliably close this gap.
-
Sep 5, 2025
Anyone who runs PHP inside a Docker container also wants PhpStorm to work with that same PHP version, for autocompletion, navigation, tests and debugging. The Docker interpreter in PhpStorm connects the IDE and the container without requiring PHP to be installed locally. This article shows how to configure it correctly.
-
Sep 4, 2025
A wrongly assigned version number breaks hundreds of other people's installations within seconds, often before the maintainer even notices. Semantic Versioning is the agreement the entire Composer ecosystem relies on: MAJOR for breaking changes, MINOR for new, backward-compatible features, PATCH for bugfixes. This article explains the rules in detail and shows Composer constraints and automated version detection with real PHP 8.4 code.
-
Sep 3, 2025
Anyone who only knows a DI container from a framework's documentation rarely understands why it is designed the way it is designed. In this article we build a minimal, PSR-11-compliant DI container from the ground up in plain PHP 8.4: with reflection-based autowiring, recursive dependency resolution, cycle detection, and clearly defined bindings between interface and implementation. What comes out is not production code, but a tool for understanding, one that shows what PHP-DI, Symfony DependencyInjection, and the Laravel container actually do under the hood.
-
-
-
Sep 1, 2025
Most PhpStorm users use less than 20 percent of the available shortcuts and navigation features. Anyone who learns to move through large PHP codebases without a mouse, run refactorings with keyboard combinations and use multi-cursor editing doubles their productivity in a short amount of time.
-
Aug 30, 2025
A PHPUnit suite that runs for twenty minutes gets ignored by the team. Tests stop being run locally, feedback loops get longer, and quality assurance ends up living exclusively in the CI pipeline, too late. This article shows where time in PHPUnit suites is actually lost and how to achieve measurable gains through bootstrap optimization, pcov, lean fixtures and test splitting.