Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .github/workflows/php.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,15 @@ jobs:
- php-version: '8.3'
symfony-version: '7.*'
- php-version: '8.4'
symfony-version: '7.*'
symfony-version: '8.*'
- php-version: '8.5'
symfony-version: '8.*'
# Minimum supported dependencies with the oldest PHP version
- php-version: '8.1'
composer-flag: '--prefer-stable --prefer-lowest'
symfony-version: '6.4'
# Test latest unreleased versions
- php-version: '8.4'
- php-version: '8.5'
stability: 'dev'

name: PHP ${{ matrix.php-version }} Test on Symfony ${{ matrix.symfony-version }} ${{ matrix.dependencies}} ${{ matrix.stability }} ${{ matrix.composer-flag }}
Expand Down
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ Changelog
3.x
===

3.3
---

* Compatibility with Symfony 8 (changed configuration from XML to PHP).
* Tested with php 8.5.

3.2.0
-----

Expand Down
35 changes: 19 additions & 16 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,12 @@
"require": {
"php": "^8.1",
"friendsofsymfony/http-cache": "^3.0",
"symfony/dependency-injection": "^6.4 || ^7.0",
"symfony/expression-language": "^6.4 || ^7.0",
"symfony/framework-bundle": "^6.4 || ^7.0",
"symfony/http-foundation": "^6.4 || ^7.0",
"symfony/http-kernel": "^6.4 || ^7.0",
"symfony/security-bundle": "^6.4 || ^7.0"
"symfony/dependency-injection": "^6.4 || ^7.0 || ^8.0",
"symfony/expression-language": "^6.4 || ^7.0 || ^8.0",
"symfony/framework-bundle": "^6.4 || ^7.0 || ^8.0",
"symfony/http-foundation": "^6.4 || ^7.0 || ^8.0",
"symfony/http-kernel": "^6.4 || ^7.0 || ^8.0",
"symfony/security-bundle": "^6.4 || ^7.0 || ^8.0"
},
"require-dev": {
"php-http/guzzle7-adapter": "^0.1.1",
Expand All @@ -45,18 +45,18 @@
"guzzlehttp/guzzle": "^7.2",
"mockery/mockery": "^1.6.9",
"monolog/monolog": "*",
"symfony/browser-kit": "^6.4 || ^7.0",
"symfony/console": "^6.4 || ^7.0",
"symfony/finder": "^6.4 || ^7.0",
"symfony/browser-kit": "^6.4 || ^7.0 || ^8.0",
"symfony/console": "^6.4 || ^7.0 || ^8.0",
"symfony/finder": "^6.4 || ^7.0 || ^8.0",
"phpunit/phpunit": "^10.5",
"symfony/twig-bundle": "^6.4 || ^7.0",
"symfony/twig-bundle": "^6.4 || ^7.0 || ^8.0",
"twig/twig": "^v3.8",
"symfony/yaml": "^6.4 || ^7.0",
"symfony/css-selector": "^6.4 || ^7.0",
"symfony/monolog-bundle": "^3.0",
"symfony/routing": "^6.4 || ^7.0",
"matthiasnoback/symfony-config-test": "^4.3.0 || ^5.1",
"matthiasnoback/symfony-dependency-injection-test": "^4.3.1 || ^5.0",
"symfony/yaml": "^6.4 || ^7.0 || ^8.0",
"symfony/css-selector": "^6.4 || ^7.0 || ^8.0",
"symfony/monolog-bundle": "*",
"symfony/routing": "^6.4 || ^7.0 || ^8.0",
"matthiasnoback/symfony-config-test": "^5.2 || ^6.1",
"matthiasnoback/symfony-dependency-injection-test": "^5.1 || ^6.2",
"phpstan/phpstan": "^2",
"phpstan/phpstan-symfony": "^2",
"phpstan/extension-installer": "^1.4",
Expand Down Expand Up @@ -90,6 +90,9 @@
"allow-plugins": {
"php-http/discovery": true,
"phpstan/extension-installer": true
},
"audit": {
"block-insecure": false
}
}
}
70 changes: 35 additions & 35 deletions src/DependencyInjection/FOSHttpCacheExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Definition;
use Symfony\Component\DependencyInjection\Extension\Extension;
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Twig\TwigFunction;
Expand All @@ -44,15 +44,15 @@ public function load(array $configs, ContainerBuilder $container): void
$configuration = $this->getConfiguration($configs, $container);
$config = $this->processConfiguration($configuration, $configs);

$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('matcher.xml');
$loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('matcher.php');

if ($config['debug']['enabled'] || (!empty($config['cache_control']))) {
$debugHeader = $config['debug']['enabled'] ? $config['debug']['header'] : false;
$ttlHeader = $config['cache_control']['ttl_header'] ?? CacheControlListener::DEFAULT_TTL_HEADER_NAME;
$container->setParameter('fos_http_cache.debug_header', $debugHeader);
$container->setParameter('fos_http_cache.ttl_header', $ttlHeader);
$loader->load('cache_control_listener.xml');
$loader->load('cache_control_listener.php');
}

$this->loadCacheable($container, $config['cacheable']);
Expand Down Expand Up @@ -99,9 +99,9 @@ public function load(array $configs, ContainerBuilder $container): void
$generateUrlType = $config['cache_manager']['generate_url_type'];
}
$container->setParameter('fos_http_cache.cache_manager.generate_url_type', $generateUrlType);
$loader->load('cache_manager.xml');
$loader->load('cache_manager.php');
if (class_exists(Application::class)) {
$loader->load('cache_manager_commands.xml');
$loader->load('cache_manager_commands.php');
}
}

Expand All @@ -117,7 +117,7 @@ public function load(array $configs, ContainerBuilder $container): void
}

if ($config['invalidation']['enabled']) {
$loader->load('invalidation_listener.xml');
$loader->load('invalidation_listener.php');

if (!empty($config['invalidation']['expression_language'])) {
$container->setAlias(
Expand All @@ -139,10 +139,10 @@ public function load(array $configs, ContainerBuilder $container): void
unset($config['flash_message']['enabled']);
$container->setParameter('fos_http_cache.event_listener.flash_message.options', $config['flash_message']);

$loader->load('flash_message.xml');
$loader->load('flash_message.php');
}

$loader->load('attributes.xml');
$loader->load('attributes.php');
}

private function loadCacheable(ContainerBuilder $container, array $config): void
Expand Down Expand Up @@ -279,15 +279,15 @@ private function parseResponseMatcher(ContainerBuilder $container, array $config
return new Reference('fos_http_cache.response_matcher.cacheable');
}

private function loadUserContext(ContainerBuilder $container, XmlFileLoader $loader, array $config): void
private function loadUserContext(ContainerBuilder $container, PhpFileLoader $loader, array $config): void
{
$configuredUserIdentifierHeaders = array_map('strtolower', $config['user_identifier_headers']);
$completeUserIdentifierHeaders = $configuredUserIdentifierHeaders;
if (false !== $config['session_name_prefix'] && !in_array('cookie', $completeUserIdentifierHeaders)) {
$completeUserIdentifierHeaders[] = 'cookie';
}

$loader->load('user_context.xml');
$loader->load('user_context.php');

$container->getDefinition('fos_http_cache.user_context.request_matcher')
->replaceArgument(0, $config['match']['accept'])
Expand Down Expand Up @@ -326,7 +326,7 @@ private function loadUserContext(ContainerBuilder $container, XmlFileLoader $loa
}
}

private function loadProxyClient(ContainerBuilder $container, XmlFileLoader $loader, array $config): void
private function loadProxyClient(ContainerBuilder $container, PhpFileLoader $loader, array $config): void
{
if (isset($config['varnish'])) {
$this->loadVarnish($container, $loader, $config['varnish']);
Expand All @@ -347,7 +347,7 @@ private function loadProxyClient(ContainerBuilder $container, XmlFileLoader $loa
$this->loadFastly($container, $loader, $config['fastly']);
}
if (isset($config['noop'])) {
$loader->load('noop.xml');
$loader->load('noop.php');
}

$container->setAlias(
Expand Down Expand Up @@ -410,7 +410,7 @@ private function createHttpDispatcherDefinition(ContainerBuilder $container, arr
$container->setDefinition($serviceName, $definition);
}

private function loadVarnish(ContainerBuilder $container, XmlFileLoader $loader, array $config): void
private function loadVarnish(ContainerBuilder $container, PhpFileLoader $loader, array $config): void
{
$this->createHttpDispatcherDefinition($container, $config['http'], 'fos_http_cache.proxy_client.varnish.http_dispatcher');
$options = [
Expand All @@ -426,7 +426,7 @@ private function loadVarnish(ContainerBuilder $container, XmlFileLoader $loader,
}
$container->setParameter('fos_http_cache.proxy_client.varnish.options', $options);

$loader->load('varnish.xml');
$loader->load('varnish.php');

$requestFactory = isset($config['http']['request_factory'])
? new Reference($config['http']['request_factory'])
Expand All @@ -441,13 +441,13 @@ private function loadVarnish(ContainerBuilder $container, XmlFileLoader $loader,
->replaceArgument(3, $streamFactory);
}

private function loadNginx(ContainerBuilder $container, XmlFileLoader $loader, array $config): void
private function loadNginx(ContainerBuilder $container, PhpFileLoader $loader, array $config): void
{
$this->createHttpDispatcherDefinition($container, $config['http'], 'fos_http_cache.proxy_client.nginx.http_dispatcher');
$container->setParameter('fos_http_cache.proxy_client.nginx.options', [
'purge_location' => $config['purge_location'],
]);
$loader->load('nginx.xml');
$loader->load('nginx.php');

$requestFactory = isset($config['http']['request_factory'])
? new Reference($config['http']['request_factory'])
Expand All @@ -462,7 +462,7 @@ private function loadNginx(ContainerBuilder $container, XmlFileLoader $loader, a
->replaceArgument(3, $streamFactory);
}

private function loadSymfony(ContainerBuilder $container, XmlFileLoader $loader, array $config): void
private function loadSymfony(ContainerBuilder $container, PhpFileLoader $loader, array $config): void
{
$serviceName = 'fos_http_cache.proxy_client.symfony.http_dispatcher';

Expand All @@ -485,7 +485,7 @@ private function loadSymfony(ContainerBuilder $container, XmlFileLoader $loader,
}
$container->setParameter('fos_http_cache.proxy_client.symfony.options', $options);

$loader->load('symfony.xml');
$loader->load('symfony.php');

$requestFactory = isset($config['http']['request_factory'])
? new Reference($config['http']['request_factory'])
Expand All @@ -500,7 +500,7 @@ private function loadSymfony(ContainerBuilder $container, XmlFileLoader $loader,
->replaceArgument(3, $streamFactory);
}

private function loadCloudflare(ContainerBuilder $container, XmlFileLoader $loader, array $config): void
private function loadCloudflare(ContainerBuilder $container, PhpFileLoader $loader, array $config): void
{
$this->createHttpDispatcherDefinition($container, $config['http'], 'fos_http_cache.proxy_client.cloudflare.http_dispatcher');
$options = [
Expand All @@ -510,7 +510,7 @@ private function loadCloudflare(ContainerBuilder $container, XmlFileLoader $load

$container->setParameter('fos_http_cache.proxy_client.cloudflare.options', $options);

$loader->load('cloudflare.xml');
$loader->load('cloudflare.php');

$requestFactory = isset($config['http']['request_factory'])
? new Reference($config['http']['request_factory'])
Expand All @@ -525,7 +525,7 @@ private function loadCloudflare(ContainerBuilder $container, XmlFileLoader $load
->replaceArgument(3, $streamFactory);
}

private function loadCloudfront(ContainerBuilder $container, XmlFileLoader $loader, array $config): void
private function loadCloudfront(ContainerBuilder $container, PhpFileLoader $loader, array $config): void
{
if (null !== $config['client']) {
$container->setAlias(
Expand All @@ -543,10 +543,10 @@ private function loadCloudfront(ContainerBuilder $container, XmlFileLoader $load
'distribution_id' => $config['distribution_id'],
]);

$loader->load('cloudfront.xml');
$loader->load('cloudfront.php');
}

private function loadFastly(ContainerBuilder $container, XmlFileLoader $loader, array $config): void
private function loadFastly(ContainerBuilder $container, PhpFileLoader $loader, array $config): void
{
$this->createHttpDispatcherDefinition($container, $config['http'], 'fos_http_cache.proxy_client.fastly.http_dispatcher');

Expand All @@ -558,7 +558,7 @@ private function loadFastly(ContainerBuilder $container, XmlFileLoader $loader,

$container->setParameter('fos_http_cache.proxy_client.fastly.options', $options);

$loader->load('fastly.xml');
$loader->load('fastly.php');

$requestFactory = isset($config['http']['request_factory'])
? new Reference($config['http']['request_factory'])
Expand All @@ -578,7 +578,7 @@ private function loadFastly(ContainerBuilder $container, XmlFileLoader $loader,
* @param string $client Name of the client used with the cache manager,
* "custom" when a custom client is used
*/
private function loadCacheTagging(ContainerBuilder $container, XmlFileLoader $loader, array $config, string $client): void
private function loadCacheTagging(ContainerBuilder $container, PhpFileLoader $loader, array $config, string $client): void
{
if ('auto' === $config['enabled'] && !in_array($client, ['varnish', 'symfony', 'cloudflare', 'fastly'])) {
return;
Expand All @@ -591,12 +591,12 @@ private function loadCacheTagging(ContainerBuilder $container, XmlFileLoader $lo
$container->setParameter('fos_http_cache.tag_handler.separator', $config['separator']);
$container->setParameter('fos_http_cache.tag_handler.strict', $config['strict']);

$loader->load('cache_tagging.xml');
$loader->load('cache_tagging.php');
if (class_exists(TwigFunction::class)) {
$loader->load('cache_tagging_twig.xml');
$loader->load('cache_tagging_twig.php');
}
if (class_exists(Application::class)) {
$loader->load('cache_tagging_commands.xml');
$loader->load('cache_tagging_commands.php');
}

if (!empty($config['expression_language'])) {
Expand All @@ -618,7 +618,7 @@ private function loadCacheTagging(ContainerBuilder $container, XmlFileLoader $lo
}
}

private function loadTest(ContainerBuilder $container, XmlFileLoader $loader, array $config): void
private function loadTest(ContainerBuilder $container, PhpFileLoader $loader, array $config): void
{
$container->setParameter('fos_http_cache.test.cache_header', $config['cache_header']);

Expand All @@ -627,7 +627,7 @@ private function loadTest(ContainerBuilder $container, XmlFileLoader $loader, ar
}
}

private function loadProxyServer(ContainerBuilder $container, XmlFileLoader $loader, array $config): void
private function loadProxyServer(ContainerBuilder $container, PhpFileLoader $loader, array $config): void
{
if (isset($config['varnish'])) {
$this->loadVarnishProxyServer($container, $loader, $config['varnish']);
Expand All @@ -643,9 +643,9 @@ private function loadProxyServer(ContainerBuilder $container, XmlFileLoader $loa
);
}

private function loadVarnishProxyServer(ContainerBuilder $container, XmlFileLoader $loader, array $config): void
private function loadVarnishProxyServer(ContainerBuilder $container, PhpFileLoader $loader, array $config): void
{
$loader->load('varnish_proxy.xml');
$loader->load('varnish_proxy.php');
foreach ($config as $key => $value) {
$container->setParameter(
'fos_http_cache.test.proxy_server.varnish.'.$key,
Expand All @@ -654,9 +654,9 @@ private function loadVarnishProxyServer(ContainerBuilder $container, XmlFileLoad
}
}

private function loadNginxProxyServer(ContainerBuilder $container, XmlFileLoader $loader, array $config): void
private function loadNginxProxyServer(ContainerBuilder $container, PhpFileLoader $loader, array $config): void
{
$loader->load('nginx_proxy.xml');
$loader->load('nginx_proxy.php');
foreach ($config as $key => $value) {
$container->setParameter(
'fos_http_cache.test.proxy_server.nginx.'.$key,
Expand Down
12 changes: 12 additions & 0 deletions src/Resources/config/attributes.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

namespace Symfony\Component\DependencyInjection\Loader\Configurator;

return static function (ContainerConfigurator $container) {
$services = $container->services();
$parameters = $container->parameters();

$services->set('fos_http_cache.event_listener.attributes', \FOS\HttpCacheBundle\EventListener\AttributesListener::class)
->args([service('controller_resolver')])
->tag('kernel.event_subscriber');
};
12 changes: 0 additions & 12 deletions src/Resources/config/attributes.xml

This file was deleted.

Loading
Loading