Fix user define class as parameters
This commit is contained in:
parent
75e0ce6530
commit
6050e3bb72
5 changed files with 49 additions and 1 deletions
|
|
@ -399,7 +399,10 @@ class AspectWeaver
|
|||
if ($type instanceof ReflectionNamedType) {
|
||||
$name = $type->getName();
|
||||
|
||||
// Don't add ? for nullable built-in types that already allow null
|
||||
if (!$type->isBuiltin()) {
|
||||
$name = '\\' . $name;
|
||||
}
|
||||
|
||||
if ($type->allowsNull() && $name !== 'mixed' && $name !== 'null') {
|
||||
return '?' . $name;
|
||||
}
|
||||
|
|
|
|||
15
tests/Classes/CallsImportedClass.php
Normal file
15
tests/Classes/CallsImportedClass.php
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
|
||||
namespace Tests\Classes;
|
||||
|
||||
use Tests\Aspects\BasicAspect;
|
||||
use Tests\Classes\Internal\ImportedClass;
|
||||
|
||||
class CallsImportedClass
|
||||
{
|
||||
#[BasicAspect]
|
||||
public function dependsOnOther(ImportedClass $object, object $sideEffect): ImportedClass
|
||||
{
|
||||
return $object;
|
||||
}
|
||||
}
|
||||
8
tests/Classes/Internal/ImportedClass.php
Normal file
8
tests/Classes/Internal/ImportedClass.php
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Tests\Classes\Internal;
|
||||
|
||||
class ImportedClass
|
||||
{
|
||||
public readonly string $data;
|
||||
}
|
||||
20
tests/ImportedClassTest.php
Normal file
20
tests/ImportedClassTest.php
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<?php
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Tests\Classes\CallsImportedClass;
|
||||
use Tests\Classes\Internal\ImportedClass;
|
||||
|
||||
final class ImportedClassTest extends TestCase
|
||||
{
|
||||
public function testAspectMethodIsCalled(): void
|
||||
{
|
||||
$c = new CallsImportedClass();
|
||||
|
||||
$o = new ImportedClass();
|
||||
|
||||
$sideEffect = (object) ['before' => false, 'after' => false];
|
||||
$c->dependsOnOther($o, $sideEffect);
|
||||
$this->assertTrue($sideEffect->before);
|
||||
$this->assertTrue($sideEffect->after);
|
||||
}
|
||||
}
|
||||
|
|
@ -9,6 +9,7 @@ use Tests\Aspects\TrackingAspect;
|
|||
use Tests\Aspects\ThrowingAspect;
|
||||
use Tests\Aspects\ModifyingAspect;
|
||||
use Tests\Aspects\ConfigurableAspect;
|
||||
use Tests\Classes\CallsImportedClass;
|
||||
use Tests\Classes\WrappedClass;
|
||||
use Tests\Classes\ParameterTypesClass;
|
||||
use Tests\Classes\StackedAspectsClass;
|
||||
|
|
@ -34,6 +35,7 @@ $loader = AspectBuilder::begin()
|
|||
ThrowingClass::class,
|
||||
ModifyingClass::class,
|
||||
ConfigurableClass::class,
|
||||
CallsImportedClass::class,
|
||||
])
|
||||
->build($weaver)
|
||||
->register();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue