Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
* develop:
  specify next release
  allow to use Service references everywhere
  fix class name in changelog
  fix psalm errors
  • Loading branch information
Baptouuuu committed Aug 1, 2024
2 parents e37a516 + e723eb4 commit 68ce0e5
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 11 deletions.
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
# Changelog

## 2.3.0 - 2024-08-01

### Added

- `Innmind\DI\Service` can now be used everywhere a service can be referenced

### Fixed

- `Innmind\Framework\Http\To` no longer raise Psalm errors when used as argument to `Application::route()`

## 2.2.0 - 2024-03-24

### Added
Expand Down
9 changes: 6 additions & 3 deletions src/Cli/Command/Defer.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,17 @@
Command,
Console,
};
use Innmind\DI\Container;
use Innmind\DI\{
Container,
Service,
};

/**
* @internal
*/
final class Defer implements Command
{
private string $service;
private string|Service $service;
private Container $locate;
/** @var callable(Command): Command */
private $map;
Expand All @@ -24,7 +27,7 @@ final class Defer implements Command
* @param callable(Command): Command $map
*/
public function __construct(
string $service,
string|Service $service,
Container $locate,
callable $map,
) {
Expand Down
11 changes: 7 additions & 4 deletions src/Http/Service.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,18 @@
ServerRequest,
Response,
};
use Innmind\DI\Container;
use Innmind\DI\{
Container,
Service as Ref,
};
use Innmind\Router\Route\Variables;

final class Service
{
private Container $container;
private string $service;
private string|Ref $service;

private function __construct(Container $container, string $service)
private function __construct(Container $container, string|Ref $service)
{
$this->container = $container;
$this->service = $service;
Expand All @@ -30,7 +33,7 @@ public function __invoke(ServerRequest $request, Variables $variables): Response
return ($this->container)($this->service)($request, $variables);
}

public static function of(Container $container, string $service): self
public static function of(Container $container, string|Ref $service): self
{
return new self($container, $service);
}
Expand Down
15 changes: 11 additions & 4 deletions src/Http/To.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,23 @@

namespace Innmind\Framework\Http;

use Innmind\Framework\Environment;
use Innmind\Http\{
ServerRequest,
Response,
};
use Innmind\DI\Container;
use Innmind\DI\{
Container,
Service,
};
use Innmind\OperatingSystem\OperatingSystem;
use Innmind\Router\Route\Variables;

final class To
{
private string $service;
private string|Service $service;

private function __construct(string $service)
private function __construct(string|Service $service)
{
$this->service = $service;
}
Expand All @@ -23,6 +28,8 @@ public function __invoke(
ServerRequest $request,
Variables $variables,
Container $container,
OperatingSystem $os = null, // these arguments are not used, there here
Environment $env = null, // to satisfy Psalm when used in Framework::route()
): Response {
/**
* @psalm-suppress InvalidFunctionCall If it fails here then the service doesn't conform to the signature callable(ServerRequest, Variables): Response
Expand All @@ -31,7 +38,7 @@ public function __invoke(
return $container($this->service)($request, $variables);
}

public static function service(string $service): self
public static function service(string|Service $service): self
{
return new self($service);
}
Expand Down

0 comments on commit 68ce0e5

Please sign in to comment.