Skip to content

Commit

Permalink
Remove factories, use laminas/lamians-di instead. (#20)
Browse files Browse the repository at this point in the history
* 1. Add `RequestUtils` and `ResponseUtils`.
2. Add cache feature for `RouteMetadata`

* Update docs

* Remove factories, use `laminas/lamians-di` instead.

* Fix test.

* Fix test.

* Fix test.

* Fix cs.
  • Loading branch information
Moln committed Sep 13, 2023
1 parent 63d3fcb commit 9b3744b
Show file tree
Hide file tree
Showing 22 changed files with 79 additions and 248 deletions.
1 change: 1 addition & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
],
"require-dev": {
"laminas/laminas-config-aggregator": "^1.7",
"laminas/laminas-di": "^3.9",
"laminas/laminas-diactoros": "^2.5",
"laminas/laminas-servicemanager": "^3.6",
"mezzio/mezzio": "^3.6",
Expand Down
30 changes: 10 additions & 20 deletions src/ConfigProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,9 @@
use Mezzio\Middleware\ErrorResponseGenerator;
use Mezzio\Router\RouteCollector;
use Zfegg\PsrMvc\Container\RouteCollectorInjectionDelegator;
use Zfegg\PsrMvc\Middleware\ContentTypeMiddleware;
use Zfegg\PsrMvc\ParamResolver\ParamResolverManager;
use Zfegg\PsrMvc\Preparer\CommonPreparer;
use Zfegg\PsrMvc\Preparer\DefaultPreparer;
use Zfegg\PsrMvc\Preparer\PreparerStack;
use Zfegg\PsrMvc\Preparer\ResultPreparableInterface;
use Zfegg\PsrMvc\Preparer\SerializationPreparer;
use Zfegg\PsrMvc\Routing\ParameterConverterInterface;
use Zfegg\PsrMvc\Routing\RouteMetadata;
use Zfegg\PsrMvc\Routing\SlugifyParameterConverter;

class ConfigProvider
Expand All @@ -27,17 +21,7 @@ public function __invoke(): array
'dependencies' => [
'factories' => [
ErrorResponseGenerator::class => Container\ErrorResponseGeneratorFactory::class,
CallbackHandlerFactory::class => Container\CallbackHandlerFactoryFactory::class,
RouteMetadata::class => Container\RouteMetadataFactory::class,
FormatMatcher::class => Container\FormatMatcherFactory::class,
ParamResolverManager::class => Container\ParamResolverManagerFactory::class,
ControllerHandler::class => Container\ControllerHandlerFactory::class,
SlugifyParameterConverter::class => Container\SlugifyParameterConverterFactory::class,
PreparerStack::class => Container\PreparerStackFactory::class,
CommonPreparer::class => Container\InvokableFactory::class,
DefaultPreparer::class => Container\InvokableFactory::class,
SerializationPreparer::class => Container\SerializationPreparerFactory::class,
ContentTypeMiddleware::class => Container\ContentTypeMiddlewareFactory::class,
],
'delegators' => [
RouteCollector::class => [
Expand All @@ -47,10 +31,16 @@ public function __invoke(): array
'aliases' => [
ParameterConverterInterface::class => SlugifyParameterConverter::class,
ResultPreparableInterface::class => PreparerStack::class,
]
],
RouteMetadata::class => [
'paths' => []
],
'auto' => [
'types' => [
ControllerHandler::class => [
'parameters' => [
'notFoundHandler' => \Mezzio\Handler\NotFoundHandler::class,
]
],
]
],
],
];
}
Expand Down
11 changes: 10 additions & 1 deletion src/Container/CallbackHandlerAbstractFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
namespace Zfegg\PsrMvc\Container;

use Interop\Container\ContainerInterface;
use Laminas\ServiceManager\Exception\ServiceNotFoundException;
use Laminas\ServiceManager\Factory\AbstractFactoryInterface;
use Zfegg\PsrMvc\CallbackHandlerFactory;

Expand All @@ -15,7 +16,15 @@ class CallbackHandlerAbstractFactory implements AbstractFactoryInterface
*/
public function canCreate(ContainerInterface $container, $requestedName)
{
return $container->get(CallbackHandlerFactory::class)->exists($requestedName);
// For resolve cycle create.
if ($requestedName === CallbackHandlerFactory::class) {
return false;
}
try {
return $container->get(CallbackHandlerFactory::class)->exists($requestedName);
} catch (ServiceNotFoundException $e) {
return false;
}
}

/**
Expand Down
25 changes: 0 additions & 25 deletions src/Container/CallbackHandlerFactoryFactory.php

This file was deleted.

22 changes: 0 additions & 22 deletions src/Container/ContentTypeMiddlewareFactory.php

This file was deleted.

24 changes: 0 additions & 24 deletions src/Container/ControllerHandlerFactory.php

This file was deleted.

20 changes: 0 additions & 20 deletions src/Container/FormatMatcherFactory.php

This file was deleted.

16 changes: 0 additions & 16 deletions src/Container/InvokableFactory.php

This file was deleted.

20 changes: 0 additions & 20 deletions src/Container/ParamResolverManagerFactory.php

This file was deleted.

9 changes: 4 additions & 5 deletions src/Container/PreparerStackFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,9 @@ class PreparerStackFactory

public function __invoke(ContainerInterface $container): ResultPreparableInterface
{
$preparer = new PreparerStack();
$preparer->push($container->get(DefaultPreparer::class));
$preparer->push($container->get(CommonPreparer::class));

return $preparer;
return new PreparerStack([
$container->get(DefaultPreparer::class),
$container->get(CommonPreparer::class),
]);
}
}
23 changes: 0 additions & 23 deletions src/Container/RouteMetadataFactory.php

This file was deleted.

23 changes: 0 additions & 23 deletions src/Container/SerializationPreparerFactory.php

This file was deleted.

11 changes: 5 additions & 6 deletions src/Container/SerializationPreparerStackFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,10 @@ class SerializationPreparerStackFactory

public function __invoke(ContainerInterface $container): ResultPreparableInterface
{
$preparer = new PreparerStack();
$preparer->push($container->get(DefaultPreparer::class));
$preparer->push($container->get(SerializationPreparer::class));
$preparer->push($container->get(CommonPreparer::class));

return $preparer;
return new PreparerStack([
$container->get(DefaultPreparer::class),
$container->get(SerializationPreparer::class),
$container->get(CommonPreparer::class),
]);
}
}
20 changes: 0 additions & 20 deletions src/Container/SlugifyParameterConverterFactory.php

This file was deleted.

8 changes: 8 additions & 0 deletions src/Preparer/PreparerStack.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,14 @@

class PreparerStack extends SplStack implements ResultPreparableInterface
{

public function __construct(iterable $preparers = [])
{
foreach ($preparers as $preparer) {
$this->push($preparer);
}
}

public function prepare(ServerRequestInterface $request, mixed $result, array $options = []): ResponseInterface
{
/** @var ResultPreparableInterface $preparer */
Expand Down

0 comments on commit 9b3744b

Please sign in to comment.