PHP __invoke 매직 메소드

PHP에는 다양한 매직 메소드 들이 있습니다.
이는 PHP의 유연함을 대표하기도 하면서, IDE의 정적 분석을 어렵게 하기에 많은 말이 있습니다만, 이에 대한 부분은 다른 포스트에서 다뤄보도록 하고 이번 포스트에선 __invoke 매직 메소드를 다뤄보려고 합니다.

Form

public __invoke(...$values) : mixed

Detail

__invoke는 그 단어의 뜻처럼 “호출”을 담당하고 있습니다. 정확히는 “객체”의 호출을 담당하고 있습니다.
기존의 객체 호출을 담당하는 __construct와는 다르게 new 키워드 없이 호출 될때 를 의미합니다.

Example

class CallableClass
{
    public function __invoke($x)
    {
        var_dump($x);
        return $this;
    }
    
    public function method()
    {
        var_dump('called class method');
    }
}

$obj = new CallableClass(1);
$obj('call invoke')->a();
var_dump(is_callable($obj));

Result

string(11) "call invoke"
string(1) "called class method"
bool(true)

Description

Thumbnail designed by freepik