Skip to content

Commit 3fdb122

Browse files
Chris53897byteheadChris8934
authored
Use php-based configs when xml is not available anymore (Symfony 8) (#313)
Co-authored-by: David Greminger <bytehead@users.noreply.github.com> Co-authored-by: Christopher Georg <christopher.georg@sr-travel.de>
1 parent 53291e7 commit 3fdb122

4 files changed

Lines changed: 164 additions & 6 deletions

File tree

src/DependencyInjection/OneupFlysystemExtension.php

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,23 @@ class OneupFlysystemExtension extends Extension
2121

2222
public function load(array $configs, ContainerBuilder $container): void
2323
{
24-
$loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
25-
$loader->load('factories.xml');
24+
if (class_exists(Loader\XmlFileLoader::class)) {
25+
$loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
26+
$loaderExt = '.xml';
27+
} else {
28+
$loader = new Loader\PhpFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
29+
$loaderExt = '.php';
30+
}
31+
32+
$loader->load('factories' . $loaderExt);
2633

2734
$adapterFactories = $this->getFactories($container);
2835

2936
$configuration = new Configuration($adapterFactories);
3037
$config = $this->processConfiguration($configuration, $configs);
3138

32-
$loader->load('adapters.xml');
33-
$loader->load('flysystem.xml');
39+
$loader->load('adapters' . $loaderExt);
40+
$loader->load('flysystem' . $loaderExt);
3441

3542
$adapters = [];
3643

@@ -45,8 +52,13 @@ public function load(array $configs, ContainerBuilder $container): void
4552

4653
public function getConfiguration(array $config, ContainerBuilder $container): Configuration
4754
{
48-
$loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
49-
$loader->load('factories.xml');
55+
if (class_exists(Loader\XmlFileLoader::class)) {
56+
$loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
57+
$loader->load('factories.xml');
58+
} else {
59+
$loader = new Loader\PhpFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
60+
$loader->load(resource: 'factories.php');
61+
}
5062

5163
$adapterFactories = $this->getFactories($container);
5264

src/Resources/config/adapters.php

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
6+
7+
return static function (ContainerConfigurator $containerConfigurator): void {
8+
$services = $containerConfigurator->services();
9+
10+
$services->set('oneup_flysystem.adapter.local', League\Flysystem\Local\LocalFilesystemAdapter::class)->abstract()
11+
->args([
12+
'location',
13+
'VisibilityConverter',
14+
'writeFlags',
15+
'linkHandling',
16+
'MimeTypeDetector',
17+
'lazyRootCreation',
18+
])
19+
;
20+
21+
$services->set('oneup_flysystem.adapter.awss3v3', League\Flysystem\AwsS3V3\AwsS3V3Adapter::class)->abstract()
22+
->args([
23+
'S3ClientInterface',
24+
'bucket',
25+
'prefix',
26+
'VisibilityConverter',
27+
'MimeTypeDetector',
28+
'options',
29+
'streamReads',
30+
]);
31+
32+
$services->set('oneup_flysystem.adapter.ftp', League\Flysystem\Ftp\FtpAdapter::class)->abstract()
33+
->args([
34+
'options',
35+
'FtpConnectionProvider',
36+
'ConnectivityChecker',
37+
'VisibilityConverter',
38+
'MimeTypeDetector',
39+
]);
40+
41+
$services->set('oneup_flysystem.adapter.sftp', League\Flysystem\PhpseclibV3\SftpAdapter::class)->abstract()
42+
->args([
43+
'options',
44+
'root',
45+
'VisibilityConverter',
46+
'MimeTypeDetector',
47+
]);
48+
49+
$services->set('oneup_flysystem.adapter.memory', League\Flysystem\InMemory\InMemoryFilesystemAdapter::class)->abstract()
50+
->args([
51+
'defaultVisibility',
52+
]);
53+
54+
$services->set('oneup_flysystem.adapter.async_aws_s3', League\Flysystem\AsyncAwsS3\AsyncAwsS3Adapter::class)->abstract()
55+
->args([
56+
'Client',
57+
'Bucket',
58+
'Prefix',
59+
'VisibilityConverter',
60+
]);
61+
62+
$services->set('oneup_flysystem.adapter.googlecloudstorage', League\Flysystem\GoogleCloudStorage\GoogleCloudStorageAdapter::class)->abstract()
63+
->args([
64+
'Client',
65+
'Bucket',
66+
'Prefix',
67+
'VisibilityHandler',
68+
'defaultVisibility',
69+
'mimeTypeDetector',
70+
]);
71+
72+
$services->set('oneup_flysystem.adapter.gitlab', RoyVoetman\FlysystemGitlab\GitlabAdapter::class)->abstract()
73+
->args([
74+
'Client',
75+
'Prefix',
76+
]);
77+
78+
$services->set('oneup_flysystem.adapter.azureblob', League\Flysystem\AzureBlobStorage\AzureBlobStorageAdapter::class)->abstract()
79+
->args([
80+
'Client',
81+
'Container',
82+
'Prefix',
83+
]);
84+
};

src/Resources/config/factories.php

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
6+
7+
return static function (ContainerConfigurator $containerConfigurator): void {
8+
$services = $containerConfigurator->services();
9+
10+
$services->set('oneup_flysystem.adapter_factory.local', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\LocalFactory::class)
11+
->tag('oneup_flysystem.adapter_factory');
12+
13+
$services->set('oneup_flysystem.adapter_factory.awss3v3', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\AwsS3V3Factory::class)
14+
->tag('oneup_flysystem.adapter_factory');
15+
16+
$services->set('oneup_flysystem.adapter_factory.ftp', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\FtpFactory::class)
17+
->tag('oneup_flysystem.adapter_factory');
18+
19+
$services->set('oneup_flysystem.adapter_factory.sftp', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\SftpFactory::class)
20+
->tag('oneup_flysystem.adapter_factory');
21+
22+
$services->set('oneup_flysystem.adapter_factory.in_memory', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\InMemoryFactory::class)
23+
->tag('oneup_flysystem.adapter_factory');
24+
25+
$services->set('oneup_flysystem.adapter_factory.customadapter', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\CustomAdapterFactory::class)
26+
->tag('oneup_flysystem.adapter_factory');
27+
28+
$services->set('oneup_flysystem.adapter_factory.async_aws_s3', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\AsyncAwsS3Factory::class)
29+
->tag('oneup_flysystem.adapter_factory');
30+
31+
$services->set('oneup_flysystem.adapter_factory.google_cloud_storage', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\GoogleCloudStorageFactory::class)
32+
->tag('oneup_flysystem.adapter_factory');
33+
34+
$services->set('oneup_flysystem.adapter_factory.gitlab', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\GitlabFactory::class)
35+
->tag('oneup_flysystem.adapter_factory');
36+
37+
$services->set('oneup_flysystem.adapter_factory.azureblob', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\AzureBlobFactory::class)
38+
->tag('oneup_flysystem.adapter_factory');
39+
};

src/Resources/config/flysystem.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
6+
7+
return static function (ContainerConfigurator $containerConfigurator): void {
8+
$services = $containerConfigurator->services();
9+
10+
$services->set('oneup_flysystem.mount_manager', League\Flysystem\MountManager::class)
11+
->public()
12+
->args([
13+
'filesystems',
14+
])
15+
;
16+
17+
$services->set('oneup_flysystem.filesystem', League\Flysystem\Filesystem::class)->public()->abstract()
18+
->args([
19+
'adapter',
20+
'config',
21+
])
22+
;
23+
};

0 commit comments

Comments
 (0)