feat: upgrade project to symfony 7.4

This commit is contained in:
Björn Fromme committed 2026-08-31 09:03:44 +02:00
1 parent c1fa08fed0
commit 010cfe56b2
29 files changed
+1391 -1133

No files matched your search

+23
View File
@@ -0,0 +1,23 @@
<?php
namespace App\BusProNet;
use Symfony\Component\DomCrawler\Crawler;
/**
* Builds a Crawler over BusPro's XML payloads.
*
* The Crawler constructor parses its content as HTML5, which flattens the
* nesting BusPro's exports and API responses rely on, so XML has to be added
* through addXmlContent() instead.
*/
final class XmlCrawlerFactory
{
public static function create(string $xml): Crawler
{
$crawler = new Crawler();
$crawler->addXmlContent($xml);
return $crawler;
}
}
+2 -1
View File
@@ -4,6 +4,7 @@ namespace App\BusProNet\XmlLoader;
use App\BusProNet\Model\Hotel;
use App\BusProNet\Model\Travel;
use App\BusProNet\XmlCrawlerFactory;
use App\Exception\HotelNotFoundException;
use Psr\Cache\InvalidArgumentException;
use Symfony\Component\DomCrawler\Crawler;
@@ -73,7 +74,7 @@ class HotelLoader extends AbstractLoader
{
$xml = $this->xmlExport->read($filename);
return new Crawler($xml);
return XmlCrawlerFactory::create($xml);
}
public function parseXml(Crawler $node): Hotel
+2 -1
View File
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace App\BusProNet\XmlLoader;
use App\BusProNet\Model\Insurance;
use App\BusProNet\XmlCrawlerFactory;
use App\BusProNet\XmlParser\InsuranceParser;
use League\Flysystem\FilesystemOperator;
use Psr\Cache\InvalidArgumentException;
@@ -50,6 +51,6 @@ class InsuranceLoader extends AbstractLoader
{
$xml = $this->xmlExport->read($filename);
return new Crawler($xml);
return XmlCrawlerFactory::create($xml);
}
}
+2 -1
View File
@@ -4,6 +4,7 @@ namespace App\BusProNet\XmlLoader;
use App\BusProNet\Model\Pickup;
use App\BusProNet\Model\Travel;
use App\BusProNet\XmlCrawlerFactory;
use Psr\Cache\InvalidArgumentException;
use Symfony\Component\DomCrawler\Crawler;
use Symfony\Contracts\Cache\ItemInterface;
@@ -46,7 +47,7 @@ class PickupLoader extends AbstractLoader
{
$xml = $this->xmlExport->read($filename);
return new Crawler($xml);
return XmlCrawlerFactory::create($xml);
}
public function parseXml(Crawler $node): Pickup
+3 -2
View File
@@ -7,6 +7,7 @@ use App\BusProNet\Model\MutableData;
use App\BusProNet\Model\ServiceAvailabilityResponse;
use App\BusProNet\Model\Travel;
use App\BusProNet\Utility\DateCodeUtility;
use App\BusProNet\XmlCrawlerFactory;
use App\BusProNet\XmlParser\TravelParser;
use App\Exception\HotelNotInTravelException;
use App\Exception\TravelNotFoundException;
@@ -71,7 +72,7 @@ class TravelLoader extends AbstractLoader
foreach ($xmlFiles as $file) {
$xml = $this->xmlExport->read($file->path());
$crawler = new Crawler($xml);
$crawler = XmlCrawlerFactory::create($xml);
$travelDataNodes = $crawler->filterXPath('//reisen/reise/termin');
$travelDataNodes->each(function (Crawler $node) use (&$mapping, $hotels, $file) {
@@ -218,7 +219,7 @@ class TravelLoader extends AbstractLoader
{
try {
$xml = $this->xmlExport->read($filename);
$crawler = new Crawler($xml);
$crawler = XmlCrawlerFactory::create($xml);
$travelNode = $crawler->filterXPath(sprintf('//reise/termin[@idbuspro="%d"]', $dateId));
@@ -4,7 +4,7 @@ namespace App\BusProNet\XmlParser;
use App\BusProNet\ApiClient;
use App\BusProNet\Exception\ResponseParserException;
use Symfony\Component\DomCrawler\Crawler;
use App\BusProNet\XmlCrawlerFactory;
class ApiResponseParser extends AbstractParser
{
@@ -14,7 +14,7 @@ class ApiResponseParser extends AbstractParser
/** @param array<string, mixed> $additionalArgs */
public function parseXmlString(string $type, string $xml, array $additionalArgs = []): mixed
{
$crawler = new Crawler($xml);
$crawler = XmlCrawlerFactory::create($xml);
if (0 === $crawler->count()) {
throw new ResponseParserException('Empty response received from server');