AgentSmith72
@AgentSmith72
JS - это моё хобби

Как вызвать свойство класса, содержащее объект другого класса, без пересохранения в переменную?

Здравствуйте. Есть ли возможность сообщить системе, что свойство содержит класс, и если вызывать это свойство как объект, то не нужно искать методов внутри класса, а нужно вызывать __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]);
}
  • Вопрос задан
  • 115 просмотров
Решения вопроса 1
Maksclub
@Maksclub Куратор тега PHP
maksfedorov.ru
($this->accountHandler)($id)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы