Здравствуйте. Есть ли возможность сообщить системе, что свойство содержит класс, и если вызывать это свойство как объект, то не нужно искать методов внутри класса, а нужно вызывать __invoke этого класса?
class CheckUserService
{
public function __construct(
private readonly AccountHandler $accountHandler
)
{
}
public function check(int $id): bool
{
$handler = $this->accountHandler;
$handler($id);
// $this->accountHandler($id);. Интерпретатор не распознает, что в свойстве лежит объект и можно вызывать его, а не искать public function accountHandler() внутри этого класса.
}
class AccountHandler
{
public function __construct(
private readonly AccountRepositoryInterface $accountRepository
)
{
}
public function __invoke(int $id): Account|Model|null
{
return $this->accountRepository->firstWhere(['id' => $id]);
}