Fix user define class as parameters

This commit is contained in:
icefox 2026-01-06 10:19:21 -03:00
parent 75e0ce6530
commit 6050e3bb72
No known key found for this signature in database
5 changed files with 49 additions and 1 deletions

View file

@ -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;
}

View 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;
}
}

View file

@ -0,0 +1,8 @@
<?php
namespace Tests\Classes\Internal;
class ImportedClass
{
public readonly string $data;
}

View 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);
}
}

View file

@ -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();