Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add typehints for factories #538

Merged
merged 2 commits into from
Mar 2, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
16 changes: 3 additions & 13 deletions DependencyInjection/Factory/Storage/AbstractStorageFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ abstract class AbstractStorageFactory implements StorageFactoryInterface
/**
* {@inheritDoc}
*/
public function create(ContainerBuilder $container, $modelClass, array $config)
public function create(ContainerBuilder $container, $modelClass, array $config): string
{
$storageId = sprintf('payum.storage.%s', strtolower(str_replace(array('\\\\', '\\'), '_', $modelClass)));

Expand All @@ -22,19 +22,9 @@ public function create(ContainerBuilder $container, $modelClass, array $config)
return $storageId;
}

/**
* {@inheritDoc}
*/
public function addConfiguration(ArrayNodeDefinition $builder)
public function addConfiguration(ArrayNodeDefinition $builder): void
{
}

/**
* @param ContainerBuilder $container
* @param string $modelClass
* @param array $config
*
* @return Definition
*/
abstract protected function createStorage(ContainerBuilder $container, $modelClass, array $config);
abstract protected function createStorage(ContainerBuilder $container, string $modelClass, array $config): Definition;
}
12 changes: 3 additions & 9 deletions DependencyInjection/Factory/Storage/CustomStorageFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,17 @@ class CustomStorageFactory extends AbstractStorageFactory
/**
* {@inheritDoc}
*/
public function getName()
public function getName(): string
{
return 'custom';
}

/**
* {@inheritdoc}
*/
protected function createStorage(ContainerBuilder $container, $modelClass, array $config)
protected function createStorage(ContainerBuilder $container, string $modelClass, array $config): ChildDefinition
{
return new ChildDefinition($config['service']);
}

/**
* {@inheritDoc}
*/
public function addConfiguration(ArrayNodeDefinition $builder)
public function addConfiguration(ArrayNodeDefinition $builder): void
{
parent::addConfiguration($builder);

Expand Down
14 changes: 4 additions & 10 deletions DependencyInjection/Factory/Storage/DoctrineStorageFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,12 @@ class DoctrineStorageFactory extends AbstractStorageFactory
/**
* {@inheritDoc}
*/
public function getName()
public function getName(): string
{
return 'doctrine';
}

/**
* {@inheritDoc}
*/
public function addConfiguration(ArrayNodeDefinition $builder)
public function addConfiguration(ArrayNodeDefinition $builder): void
{
parent::addConfiguration($builder);

Expand All @@ -33,10 +30,7 @@ public function addConfiguration(ArrayNodeDefinition $builder)
->end();
}

/**
* {@inheritDoc}
*/
protected function createStorage(ContainerBuilder $container, $modelClass, array $config)
protected function createStorage(ContainerBuilder $container, string $modelClass, array $config): ChildDefinition
{
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../../../Resources/config/storage'));
$loader->load('doctrine.'.$config['driver'].'.xml');
Expand All @@ -47,4 +41,4 @@ protected function createStorage(ContainerBuilder $container, $modelClass, array

return $storage;
}
}
}
14 changes: 4 additions & 10 deletions DependencyInjection/Factory/Storage/FilesystemStorageFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,12 @@ class FilesystemStorageFactory extends AbstractStorageFactory
/**
* {@inheritdoc}
*/
public function getName()
public function getName(): string
{
return 'filesystem';
}

/**
* {@inheritdoc}
*/
public function addConfiguration(ArrayNodeDefinition $builder)
public function addConfiguration(ArrayNodeDefinition $builder): void
{
parent::addConfiguration($builder);

Expand All @@ -30,10 +27,7 @@ public function addConfiguration(ArrayNodeDefinition $builder)
->end();
}

/**
* {@inheritdoc}
*/
protected function createStorage(ContainerBuilder $container, $modelClass, array $config)
protected function createStorage(ContainerBuilder $container, string $modelClass, array $config): ChildDefinition
{
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../../../Resources/config/storage'));
$loader->load('filesystem.xml');
Expand All @@ -46,4 +40,4 @@ protected function createStorage(ContainerBuilder $container, $modelClass, array

return $storage;
}
}
}
15 changes: 4 additions & 11 deletions DependencyInjection/Factory/Storage/Propel1StorageFactory.php
Original file line number Diff line number Diff line change
@@ -1,29 +1,22 @@
<?php

namespace Payum\Bundle\PayumBundle\DependencyInjection\Factory\Storage;


use Symfony\Component\DependencyInjection\ChildDefinition;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
use Symfony\Component\Config\FileLocator;


class Propel1StorageFactory extends AbstractStorageFactory
class Propel1StorageFactory extends AbstractStorageFactory
{

/**
* {@inheritDoc}
*/
public function getName()
public function getName(): string
{
return "propel1";
}

/**
* {@inheritDoc}
*/
protected function createStorage(ContainerBuilder $container, $modelClass, array $config)

protected function createStorage(ContainerBuilder $container, string $modelClass, array $config): ChildDefinition
{
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../../../Resources/config/storage'));
$loader->load('propel1.xml');
Expand Down
13 changes: 3 additions & 10 deletions DependencyInjection/Factory/Storage/Propel2StorageFactory.php
Original file line number Diff line number Diff line change
@@ -1,29 +1,22 @@
<?php

namespace Payum\Bundle\PayumBundle\DependencyInjection\Factory\Storage;


use Symfony\Component\DependencyInjection\ChildDefinition;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
use Symfony\Component\Config\FileLocator;


class Propel2StorageFactory extends AbstractStorageFactory
{

/**
* {@inheritDoc}
*/
public function getName()
public function getName(): string
{
return "propel2";
}

/**
* {@inheritDoc}
*/
protected function createStorage(ContainerBuilder $container, $modelClass, array $config)

protected function createStorage(ContainerBuilder $container, string $modelClass, array $config): ChildDefinition
{
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../../../Resources/config/storage'));
$loader->load('propel2.xml');
Expand Down
11 changes: 3 additions & 8 deletions DependencyInjection/Factory/Storage/StorageFactoryInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,26 +7,21 @@
interface StorageFactoryInterface
{
/**
* @param ContainerBuilder $container
* @param string $modelClass
* @param array $config
*
* @return string The payment serviceId
*/
function create(ContainerBuilder $container, $modelClass, array $config);

/**
* The storage name,
* The storage name,
* For example filesystem, doctrine, propel etc.
*
*
* @return string
*/
function getName();

/**
* @param ArrayNodeDefinition $builder
*
* @return void
*/
function addConfiguration(ArrayNodeDefinition $builder);
}
}