Skip to content

Commit d93d2d4

Browse files
committed
wip
1 parent 0199fa3 commit d93d2d4

File tree

5 files changed

+46
-1
lines changed

5 files changed

+46
-1
lines changed

packages/reflection/src/ClassReflector.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use ReflectionClass as PHPReflectionClass;
88
use ReflectionMethod as PHPReflectionMethod;
99
use ReflectionProperty as PHPReflectionProperty;
10+
use Tempest\Support\HasMemoization;
1011

1112
/**
1213
* @template TClassName of object

packages/reflection/src/HasAttributes.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use ReflectionMethod as PHPReflectionMethod;
1111
use ReflectionParameter as PHPReflectionParameter;
1212
use ReflectionProperty as PHPReflectionProperty;
13+
use Tempest\Support\HasMemoization;
1314

1415
trait HasAttributes
1516
{

packages/reflection/src/HasMemoization.php renamed to packages/support/src/HasMemoization.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace Tempest\Reflection;
3+
namespace Tempest\Support;
44

55
use Closure;
66

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
namespace Tempest\Support\Tests\Fixtures;
4+
5+
use Tempest\Support\HasMemoization;
6+
7+
final class MemoizeClass
8+
{
9+
use HasMemoization;
10+
11+
public int $counter = 0;
12+
13+
public function do(): mixed
14+
{
15+
return $this->memoize(
16+
'key',
17+
function () {
18+
$this->counter += 1;
19+
return 'value';
20+
}
21+
);
22+
}
23+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
namespace Tempest\Support\Tests;
4+
5+
use PHPUnit\Framework\TestCase;
6+
use Tempest\Support\Tests\Fixtures\MemoizeClass;
7+
8+
final class HasMemoizationTest extends TestCase
9+
{
10+
public function test_memoize(): void
11+
{
12+
$class = new MemoizeClass();
13+
14+
$this->assertSame('value', $class->do());
15+
$this->assertSame(1, $class->counter);
16+
$this->assertSame('value', $class->do());
17+
$this->assertSame('value', $class->do());
18+
$this->assertSame(1, $class->counter);
19+
}
20+
}

0 commit comments

Comments
 (0)