Allow iterable<T> where ramsey/collection would be used, deprecate collection classes

This patch is based on https://github.com/ramsey/uuid/pull/405

As discussed in https://github.com/ramsey/uuid/pull/405#discussion_r832095457, the `ramsey/collection`
dependency can be phased out.

Doing so via direct removal is not feasible without a clear BC break, so this change only deprecates:

 * `Ramsey\Uuid\Builder\BuilderCollection`
 * `Ramsey\Uuid\Provider\Node\NodeProviderCollection`

These classes will then be removed in `5.0.0`, along with the `ramsey/collection` dependency.
This commit is contained in:
Marco Pivetta
2022-03-22 17:30:42 +01:00
parent 53d9f35c65
commit f0ada112c5
7 changed files with 39 additions and 53 deletions
@@ -6,7 +6,6 @@ namespace Ramsey\Uuid\Test\Provider\Node;
use Ramsey\Uuid\Exception\NodeException;
use Ramsey\Uuid\Provider\Node\FallbackNodeProvider;
use Ramsey\Uuid\Provider\Node\NodeProviderCollection;
use Ramsey\Uuid\Provider\Node\RandomNodeProvider;
use Ramsey\Uuid\Provider\Node\StaticNodeProvider;
use Ramsey\Uuid\Provider\Node\SystemNodeProvider;
@@ -27,7 +26,7 @@ class FallbackNodeProviderTest extends TestCase
->method('getNode')
->willThrowException(new NodeException());
$provider = new FallbackNodeProvider(new NodeProviderCollection([$providerWithoutNode, $providerWithNode]));
$provider = new FallbackNodeProvider([$providerWithoutNode, $providerWithNode]);
$provider->getNode();
}
@@ -45,9 +44,7 @@ class FallbackNodeProviderTest extends TestCase
$anotherProviderWithoutNode->expects($this->never())
->method('getNode');
$provider = new FallbackNodeProvider(new NodeProviderCollection(
[$providerWithoutNode, $providerWithNode, $anotherProviderWithoutNode]
));
$provider = new FallbackNodeProvider([$providerWithoutNode, $providerWithNode, $anotherProviderWithoutNode]);
$node = $provider->getNode();
$this->assertSame('57764a07f756', $node->toString());
@@ -59,7 +56,7 @@ class FallbackNodeProviderTest extends TestCase
$providerWithoutNode->method('getNode')
->willThrowException(new NodeException());
$provider = new FallbackNodeProvider(new NodeProviderCollection([$providerWithoutNode]));
$provider = new FallbackNodeProvider([$providerWithoutNode]);
$this->expectException(NodeException::class);
$this->expectExceptionMessage(
@@ -75,20 +72,12 @@ class FallbackNodeProviderTest extends TestCase
$randomNodeProvider = new RandomNodeProvider();
$systemNodeProvider = new SystemNodeProvider();
$nodeProviderCollection = new NodeProviderCollection(
[
$staticNodeProvider,
$randomNodeProvider,
$systemNodeProvider,
]
);
$serializedNodeProviderCollection = serialize($nodeProviderCollection);
/** @var NodeProviderCollection $unserializedNodeProviderCollection */
$unserializedNodeProviderCollection = unserialize($serializedNodeProviderCollection);
$this->assertInstanceOf(NodeProviderCollection::class, $unserializedNodeProviderCollection);
/** @var list<NodeProviderInterface> $unserializedNodeProviderCollection */
$unserializedNodeProviderCollection = unserialize(serialize([
$staticNodeProvider,
$randomNodeProvider,
$systemNodeProvider,
]));
foreach ($unserializedNodeProviderCollection as $nodeProvider) {
$this->assertInstanceOf(NodeProviderInterface::class, $nodeProvider);