Skip to content

Commit

Permalink
refactor(core)!: Removed deprecated InstanceCache trait.
Browse files Browse the repository at this point in the history
  • Loading branch information
LastDragon-ru committed Jan 1, 2024
1 parent fdf300c commit cfa1db7
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 283 deletions.
86 changes: 0 additions & 86 deletions packages/core/src/Concerns/InstanceCache.php

This file was deleted.

185 changes: 0 additions & 185 deletions packages/core/src/Concerns/InstanceCacheTest.php

This file was deleted.

59 changes: 47 additions & 12 deletions packages/spa/src/Routing/Resolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,32 @@

namespace LastDragon_ru\LaraASP\Spa\Routing;

use Illuminate\Contracts\Queue\QueueableEntity;
use Illuminate\Http\Request;
use Illuminate\Routing\Route;
use Illuminate\Routing\Router;
use LastDragon_ru\LaraASP\Core\Concerns\InstanceCache;

use function array_key_exists;
use function array_map;
use function array_merge;
use function is_array;
use function is_null;
use function json_encode;
use function ksort;
use function mb_strtolower;

abstract class Resolver {
use InstanceCache;
use const JSON_THROW_ON_ERROR;

private Router $router;
abstract class Resolver {
/**
* @var array<string, mixed>
*/
private array $resolved = [];

public function __construct(Router $router) {
$this->router = $router;
public function __construct(
private readonly Router $router,
) {
// empty
}

// <editor-fold desc="Abstract">
Expand Down Expand Up @@ -47,16 +58,17 @@ public function get(mixed $value, Request $request = null, Route $route = null):
$route = $route ?: $this->router->getCurrentRoute();
$request = $request ?: $this->router->getCurrentRequest();
$parameters = $this->resolveParameters($request, $route);
$key = array_merge([$value], $parameters);
$resolved = $this->instanceCacheGet($key, function () use ($value, $parameters) {
return $this->resolve($value, $parameters);
});
$key = $this->key(array_merge([$value], $parameters));

if (is_null($resolved)) {
if (!array_key_exists($key, $this->resolved)) {
$this->resolved[$key] = $this->resolve($value, $parameters);
}

if (is_null($this->resolved[$key])) {
throw new UnresolvedValueException($value);
}

return $resolved;
return $this->resolved[$key];
}

/**
Expand All @@ -68,4 +80,27 @@ public function bind(mixed $value, Route $route): mixed {
return $this->get($value, null, $route);
}
// </editor-fold>

// <editor-fold desc="Helpers">
// =========================================================================
private function key(mixed $keys): string {
if (is_array($keys)) {
$keys = array_map(static function ($key) {
if ($key instanceof QueueableEntity) {
$key = [
$key::class,
$key->getQueueableConnection(),
$key->getQueueableId(),
];
}

return $key;
}, $keys);

ksort($keys);
}

return mb_strtolower(json_encode($keys, JSON_THROW_ON_ERROR));
}
//</editor-fold>
}
17 changes: 17 additions & 0 deletions packages/spa/src/Routing/ResolverTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use Illuminate\Routing\Route;
use Illuminate\Routing\Router;
use LastDragon_ru\LaraASP\Spa\Testing\Package\TestCase;
use Mockery;
use Override;
use PHPUnit\Framework\Attributes\CoversClass;

Expand Down Expand Up @@ -50,6 +51,22 @@ protected function resolveParameters(Request $request = null, Route $route = nul
self::assertNotSame($a, $c);
}

public function testGetCached(): void {
$route = Mockery::mock(Route::class);
$request = Mockery::mock(Request::class);
$resolver = Mockery::mock(Resolver::class);
$resolver->shouldAllowMockingProtectedMethods();
$resolver->makePartial();

$resolver
->shouldReceive('resolve')
->once()
->andReturn('value');

$resolver->get(123, $request, $route);
$resolver->get(123, $request, $route);
}

public function testGetUnresolvedValue(): void {
self::expectException(UnresolvedValueException::class);

Expand Down

0 comments on commit cfa1db7

Please sign in to comment.