feat(Docker): Upgrade to PHP 8.5.0RC3 with native ext-uri support

BREAKING CHANGE: Requires PHP 8.5.0RC3

Changes:
- Update Docker base image from php:8.4-fpm to php:8.5.0RC3-fpm
- Enable ext-uri for native WHATWG URL parsing support
- Update composer.json PHP requirement from ^8.4 to ^8.5
- Add ext-uri as required extension in composer.json
- Move URL classes from Url.php85/ to Url/ directory (now compatible)
- Remove temporary PHP 8.4 compatibility workarounds

Benefits:
- Native URL parsing with Uri\WhatWg\Url class
- Better performance for URL operations
- Future-proof with latest PHP features
- Eliminates PHP version compatibility issues
This commit is contained in:
2025-10-27 09:31:28 +01:00
parent 799f74f00a
commit c8b47e647d
81 changed files with 6988 additions and 601 deletions

View File

@@ -6,6 +6,7 @@ use App\Framework\DateTime\FrozenClock;
use App\Framework\Http\Cookies\Cookie;
use App\Framework\Http\Cookies\Cookies;
use App\Framework\Http\HttpRequest;
use App\Framework\Http\Request;
use App\Framework\Http\Response;
use App\Framework\Http\ResponseManipulator;
use App\Framework\Http\Session\InMemorySessionStorage;
@@ -63,9 +64,9 @@ describe('SessionManager Basic Operations', function () {
$this->storage->write($sessionId, $testData);
// Request mit Session-Cookie erstellen
$cookies = new Cookies([
new Cookie('ms_context', $sessionId->toString()),
]);
$cookies = new Cookies(
new Cookie('ms_context', $sessionId->toString())
);
$request = new Request(
method: 'GET',
@@ -86,9 +87,9 @@ describe('SessionManager Basic Operations', function () {
// Session-ID existiert, aber keine Daten im Storage
$sessionId = SessionId::fromString('nonexistentsessionid1234567890abc');
$cookies = new Cookies([
new Cookie('ms_context', $sessionId->toString()),
]);
$cookies = new Cookies(
new Cookie('ms_context', $sessionId->toString())
);
$request = new Request(
method: 'GET',
@@ -138,9 +139,9 @@ describe('SessionManager Session Persistence', function () {
$sessionId = $session1->id->toString();
// Zweite Request: Session mit Cookie laden
$cookies = new Cookies([
new Cookie('ms_context', $sessionId),
]);
$cookies = new Cookies(
new Cookie('ms_context', $sessionId)
);
$request2 = new Request(
method: 'GET',
@@ -185,9 +186,9 @@ describe('SessionManager Session Persistence', function () {
$this->sessionManager->saveSession($session, $response);
// Session erneut laden
$cookies = new Cookies([
new Cookie('ms_context', $session->id->toString()),
]);
$cookies = new Cookies(
new Cookie('ms_context', $session->id->toString())
);
$request = new Request(
method: 'GET',
@@ -316,9 +317,9 @@ describe('SessionManager Configuration', function () {
describe('SessionManager Error Handling', function () {
test('handles invalid session ID gracefully', function () {
$cookies = new Cookies([
new Cookie('ms_context', 'invalid-session-id-format'),
]);
$cookies = new Cookies(
new Cookie('ms_context', 'invalid-session-id-format')
);
$request = new Request(
method: 'GET',
@@ -368,9 +369,9 @@ describe('SessionManager Error Handling', function () {
);
$sessionId = SessionId::fromString('existingsessionid1234567890abcdef');
$cookies = new Cookies([
new Cookie('ms_context', $sessionId->toString()),
]);
$cookies = new Cookies(
new Cookie('ms_context', $sessionId->toString())
);
$request = new Request(
method: 'GET',