34 lines
784 B
PHP
34 lines
784 B
PHP
<?php
|
|
|
|
namespace Tests\Aspects;
|
|
|
|
use Attribute;
|
|
use RuntimeException;
|
|
|
|
#[Attribute(Attribute::TARGET_METHOD)]
|
|
class ThrowingAspect
|
|
{
|
|
public static bool $throwInBefore = false;
|
|
public static bool $throwInAfter = false;
|
|
|
|
public function before(object|string $target, mixed ...$args): void
|
|
{
|
|
if (self::$throwInBefore) {
|
|
throw new RuntimeException('Exception thrown in before()');
|
|
}
|
|
}
|
|
|
|
public function after(object|string $target, mixed $result): mixed
|
|
{
|
|
if (self::$throwInAfter) {
|
|
throw new RuntimeException('Exception thrown in after()');
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
public static function reset(): void
|
|
{
|
|
self::$throwInBefore = false;
|
|
self::$throwInAfter = false;
|
|
}
|
|
}
|