メソッドのアクセス範囲を設定する

# ReflectionMethod::setAccessible

(PHP 5 >= 5.3.2, PHP 7, PHP 8)

ReflectionMethod::setAccessible — メソッドのアクセス範囲を設定する

警告

この関数は PHP 8.5.0 で 非推奨になります。この関数に頼らないことを強く推奨します。

### 説明

#[\Deprecated]
public function ReflectionMethod::setAccessible(bool `$accessible`): void

ReflectionMethod::invoke() メソッド経由で、 protected や private なメソッドを呼び出し可能にします。

> 注意: PHP 8.1.0 以降は、このメソッドをコールしても何も起こりません。 つまり、全てのメソッドはデフォルトで呼び出し可能です。

### パラメータ

`accessible`

  `true` を指定すると、アクセスできるようになります。

### 戻り値

値を返しません。

### 変更履歴

バージョン | 説明
--- | ---
8.5.0 | 効果がなくなったため、このメソッドは非推奨になりました。
8.1.0 | このメソッドをコールしても何も起こりません。 全てのメソッドはデフォルトで呼び出し可能です。

### 例

例1 簡単なクラス定義

    <?php
    class MyClass
    {
        private function foo()
        {
            return 'bar';
        }
    }

    $method = new ReflectionMethod("MyClass", "foo");
    $method->setAccessible(true);

    $obj = new MyClass();
    echo $method->invoke($obj);
    echo $obj->foo();
    ?>

上の例の出力は、 たとえば以下のようになります。

    bar
    Fatal error: Uncaught Error: Call to private method MyClass::foo() from global scope in /in/qdaZS:16

### 参考

- ReflectionMethod::isPrivate() - private メソッドであるかどうかを調べる
- ReflectionMethod::isProtected() - protected メソッドであるかどうかを調べる

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open