2026 opens with PHP 8.5 fresh in production and PHP 9.0 on the horizon. FrankenPHP is maturing towards Magento compatibility. AI tooling is changing the economics of code generation. OpenSearch vector search is arriving in e-commerce. I look at what is worth tracking in the first quarter and what is hype versus signal.
PHP 8.5 in Magento 2 – adoption timeline
# PHP 8.5 released November 2025 # Magento 2.4.8 supports PHP 8.4 - not yet 8.5 # Expected: Magento 2.4.9 adds PHP 8.5 support (Q2 2026 estimate) # Safe to use PHP 8.5 in: # - Custom modules (if you control the PHP version) # - CLI tools and import scripts # - Non-Magento PHP services # Wait for PHP 8.5 in: # - Magento web process (until official 2.4.9 support) # - Third-party modules (may not support 8.5 yet) # Pipe operator in Magento modules: # Works today in PHP 8.5 with Magento 2.4.8 if running PHP 8.5 # Magento core files don't use pipe yet - your custom code can # Practical advice: test on PHP 8.5 staging, deploy when your module set is compatible vendor/bin/phpstan analyse app/code/ --php-version=8.5 --level=5
PHP 9.0 signals – what is being discussed
PHP 9.0 target: 2026 (no confirmed date yet) Theme: clean break from deprecated 8.x patterns Confirmed removals (deprecated in 8.x): - Dynamic property creation → Fatal error - utf8_encode() / utf8_decode() → Removed (use mb_convert_encoding()) - Implicit nullable parameters → Require explicit ?Type - Nested ternary without brackets → Removed Under discussion: - Typed arrays: string[] as a native type (still controversial) - Typed variadics: function foo(int ...$values) - Abstract readonly: abstract readonly class - Pipe operator refinements based on 8.5 feedback What stays: - All existing PHP 8.x code that avoided deprecated patterns - OOP model unchanged - Backward compatibility within non-deprecated APIs
# Prepare now for PHP 9.0 compatibility
# Find all deprecated usages in your codebase
# 1. Dynamic properties
vendor/bin/phpstan analyse app/code/ --level=2 --php-version=9.0 2>&1 | grep "dynamic"
# 2. utf8_encode/decode
grep -rn "utf8_encode\|utf8_decode" app/code/ --include="*.php"
# 3. Implicit nullable
vendor/bin/rector process app/code/ \
--only="\Rector\TypeDeclaration\Rector\FunctionLike\AddParamTypeFromPropertyTypeRector" \
--dry-run
# 4. Run full PHP 9.0 compatibility check
vendor/bin/phpcs --standard=PHPCompatibility --runtime-set testVersion 9.0 app/code/
FrankenPHP – state in Q1 2026
# FrankenPHP progress towards Magento compatibility:
# What works (as of Q1 2026):
# - FrankenPHP as a PHP-FPM replacement (no worker mode)
# - 15-20% faster than nginx + PHP-FPM due to better I/O handling
# - HTTP/3 support out of the box
# - Simpler Docker images (one container vs nginx + fpm)
# What does NOT work yet:
# - Worker mode (app keeps running between requests) - Magento's bootstrap
# creates static globals that break when reused across requests
# - Auto-certificates in production without custom Caddie config
# Practical test:
docker run -p 80:80 -v ./:/app dunglas/frankenphp \
php-server --root /app/pub --listen 0.0.0.0:80
# Test basic Magento page rendering without worker mode
# Verdict Q1 2026: worth monitoring, not yet production-ready for Magento
# Check: https://frankenphp.dev/docs/worker/
AI tooling in Q1 2026
| Tool | Best for in 2026 | Limitation |
|---|---|---|
| Cursor (Claude 3.5) | Multi-file refactoring, complex changes | Expensive, cloud only |
| Copilot (GPT-4o) | Inline completion, VS Code integration | Less context-aware than Cursor |
| Ollama + Qwen2.5 Coder 32B | Privacy-safe, NDA work, offline | Requires beefy hardware (24GB+ VRAM) |
| Claude 3.5 Sonnet via API | 200K context, full module analysis | API costs add up |
# Running Qwen2.5 Coder locally for Magento work ollama pull qwen2.5-coder:32b # requires 24GB VRAM or 64GB RAM for CPU # Good enough for: # - "Explain this DI configuration" # - "Write a plugin for this method" # - "Review this for Magento antipatterns" # Still needs cloud models for: # - "Review my entire module" (context > 32K tokens) # - Latest Magento 2.4.9 changes (training cutoff)
OpenSearch vector search – arrives in e-commerce
# OpenSearch 2.x k-NN vector search # Magento 2 modules starting to appear for semantic search # Use case: "find products similar to this description" using embeddings # Early adopter setup: # 1. OpenSearch 2.13+ with k-NN plugin enabled # 2. Embedding model (Ollama nomic-embed-text or OpenAI ada-002) # 3. Custom Magento module to index/search via embeddings # (see separate post on this topic) # Status Q1 2026: experimental but production-proven in non-Magento PHP apps # Magento integration: first community modules available, not yet mature
Summary
Q1 2026 is about consolidation: PHP 8.5 pipe operator enters everyday code, PHP 9.0 preparations start in the background, FrankenPHP is worth watching for non-Magento PHP services. AI tooling continues to improve with larger context windows making full-module analysis reliable. The most impactful immediate action: run PHPStan on your codebase with PHP 9.0 target to find the deprecated patterns that need fixing before 2026 turns into 2027.
