__invoke 메서드
마법 메서드 __invoke는 클래스의 인스턴스를 함수처럼 호출할 수 있게 합니다.
객체가 함수처럼 호출되면 PHP는 자동으로 이 메서드를 호출합니다.
이 메서드는 일반 함수처럼 매개변수를 받고 값을 반환할 수 있습니다.
구문
class MyClass {
public function __invoke(...$args) {
// 구현
}
}
예제
__invoke 메서드를 가진 클래스를 만들고 객체를 함수처럼 호출해 보겠습니다:
<?php
class Greeter {
public function __invoke($name) {
return "Hello, $name!";
}
}
$greet = new Greeter();
echo $greet('John');
?>
코드 실행 결과:
'Hello, John!'
예제
여러 매개변수와 함께 __invoke 사용하기:
<?php
class Calculator {
public function __invoke($a, $b) {
return $a + $b;
}
}
$calc = new Calculator();
echo $calc(5, 3);
?>
코드 실행 결과:
8
예제
is_callable를 사용하여 객체가 호출 가능한지 확인하기:
<?php
class Test {}
$obj1 = new Test();
$obj2 = new class { public function __invoke() {} };
var_dump(is_callable($obj1));
var_dump(is_callable($obj2));
?>
코드 실행 결과:
false
true
함께 보기
-
클래스의 생성자인 메서드
__construct,
-
객체를 문자열로 표현할 수 있게 하는 메서드
__toString,