라이브러리

[PHP] ReflectionMethod::invoke - 호출




ReflectionMethod::invoke

`ReflectionMethod` 클래스는 PHP 5.0 버전부터 사용할 수 있는 클래스입니다. 이 클래스는 클래스나 인터페이스에 정의된 메서드를 반영하는 데 사용됩니다. `invoke` 메서드는 특정 메서드를 호출하는 데 사용됩니다.

인자

`invoke` 메서드는 두 개의 인자를 받습니다.

1. `$object`: 호출할 메서드의 객체입니다.
2. `$...`: 호출할 메서드의 인자입니다. `$...`는 가변 인자로, 여러 개의 인자를 받을 수 있습니다.

예제

다음 예제는 `ReflectionMethod` 클래스를 사용하여 메서드를 호출하는 방법을 보여줍니다.

#hostingforum.kr
php

class MyClass {

    public function sayHello($name) {

        echo "Hello, $name!";

    }

}



$obj = new MyClass();

$reflectionMethod = new ReflectionMethod('MyClass', 'sayHello');



// invoke 메서드를 사용하여 sayHello 메서드를 호출합니다.

$reflectionMethod->invoke($obj, 'World');



// 결과:

// Hello, World!



위 예제에서 `ReflectionMethod` 클래스를 사용하여 `MyClass` 클래스의 `sayHello` 메서드를 호출합니다. `$obj` 객체와 `World`라는 인자를 전달하여 메서드를 호출합니다.

인자 전달

`invoke` 메서드는 가변 인자로, 여러 개의 인자를 전달할 수 있습니다.

#hostingforum.kr
php

class MyClass {

    public function sayHello($name, $age) {

        echo "Hello, $name! You are $age years old.";

    }

}



$obj = new MyClass();

$reflectionMethod = new ReflectionMethod('MyClass', 'sayHello');



// invoke 메서드를 사용하여 sayHello 메서드를 호출합니다.

$reflectionMethod->invoke($obj, 'World', 30);



// 결과:

// Hello, World! You are 30 years old.



위 예제에서 `sayHello` 메서드는 두 개의 인자를 받습니다. `$reflectionMethod->invoke` 메서드는 `$obj` 객체와 `World`와 `30`이라는 인자를 전달하여 메서드를 호출합니다.

오류 처리

`invoke` 메서드는 오류를 처리하지 않습니다. 만약 호출할 메서드가 존재하지 않거나, 인자가 올바르지 않으면 PHP는 오류를 발생시킵니다.

#hostingforum.kr
php

class MyClass {

    public function sayHello($name) {

        echo "Hello, $name!";

    }

}



$obj = new MyClass();

$reflectionMethod = new ReflectionMethod('MyClass', 'sayGoodbye');



// invoke 메서드를 사용하여 sayGoodbye 메서드를 호출합니다.

$reflectionMethod->invoke($obj, 'World');



// 결과:

// Fatal error: Uncaught ReflectionException: Method MyClass::sayGoodbye does not exist



위 예제에서 `sayGoodbye` 메서드는 존재하지 않습니다. `$reflectionMethod->invoke` 메서드는 오류를 발생시킵니다.

결론

`ReflectionMethod` 클래스의 `invoke` 메서드는 클래스나 인터페이스에 정의된 메서드를 호출하는 데 사용됩니다. 이 메서드는 가변 인자로, 여러 개의 인자를 전달할 수 있습니다. 하지만 오류를 처리하지 않으므로, 호출할 메서드가 존재하지 않거나, 인자가 올바르지 않으면 PHP는 오류를 발생시킵니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 10,077건 / 280 페이지

검색

게시물 검색