PHP 8.6.0 Beta 1 is available for testing

ReflectionMethod::setAccessible

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

ReflectionMethod::setAccessibleDefine la accesibilidad del método

Advertencia

Esta función está OBSOLETA a partir de PHP 8.5.0. Depender de esta función está altamente desaconsejado.

Descripción

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

Activa la invocación de métodos protegidos y privados mediante el método ReflectionMethod::invoke() .

Nota: A partir de PHP 8.1.0, la llamada a este método no tiene ningún efecto; todas las propiedades son accesibles por defecto.

Parámetros

accessible

true para permitir la accesibilidad, o false .

Valores devueltos

No se retorna ningún valor.

Historial de cambios

Versión Descripción
8.5.0 Este método ha quedado obsoleto, ya que no tiene efecto.
8.1.0 La llamada a este método no tiene ningún efecto; todos los métodos son invocables por defecto.

Ejemplos

Ejemplo #1 Definición de una clase simple

<?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();
?>

Resultado del ejemplo anterior es similar a:

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

Véase también

Found A Problem?

Learn How To Improve This PageSubmit a Pull RequestReport a Bug
+add a note

User Contributed Notes 1 note

up
20
dave1010 at gmail dot com
15 years ago
This is handy for accessing private methods but remember that things are normally private for a reason! Unit Testing is one (debatable) use case for this.
Example:
<?php
class Foo {
 private function myPrivateMethod() {
 return 7;
 }
}
$method = new ReflectionMethod('Foo', 'myPrivateMethod');
$method->setAccessible(true);
 
echo $method->invoke(new Foo);
// echos "7"
?>

This works nicely with PHPUnit: http://php.net/manual/en/reflectionmethod.setaccessible.php 
+add a note

AltStyle によって変換されたページ (->オリジナル) /