PHP 8.6.0 Beta 1 is available for testing

La clase ReflectionMethod

(PHP 5, PHP 7, PHP 8)

Introducción

La clase ReflectionMethod proporciona información sobre un método.

Sinopsis de la clase

class ReflectionMethod extends ReflectionFunctionAbstract {
/* Constantes */
public const int IS_STATIC ;
public const int IS_PUBLIC ;
public const int IS_PROTECTED ;
public const int IS_PRIVATE ;
public const int IS_ABSTRACT ;
public const int IS_FINAL ;
/* Propiedades */
public string $class ;
/* Propiedades heredadas */
public string $name ;
/* Métodos */
public function __construct (object |string $objectOrMethod, string $method)
public function __construct (string $classMethod)
public static function createFromMethodName (string $method): static
public static function export (string $class, string $name, bool $return = false ): string
public function getClosure (? object $object = null ): Closure
public function getDeclaringClass (): ReflectionClass
public function getModifiers (): int
public function getPrototype (): ReflectionMethod
public function hasPrototype (): bool
public function invoke (? object $object, mixed ...$args): mixed
public function invokeArgs (? object $object, array $args): mixed
public function isAbstract (): bool
public function isConstructor (): bool
public function isDestructor (): bool
public function isFinal (): bool
public function isPrivate (): bool
public function isProtected (): bool
public function isPublic (): bool
#[\Deprecated]
public function setAccessible (bool $accessible): void
public function __toString (): string
/* Métodos heredados */
public function ReflectionFunctionAbstract::getAttributes (? string $name = null , int $flags = 0): array
abstract public function ReflectionFunctionAbstract::__toString (): void
}

Propiedades

name

Nombre del método

class

Nombre de la clase

Constantes predefinidas

Modificadores de ReflectionMethod

ReflectionMethod::IS_STATIC int

Indica que el método es estático Anterior a PHP 7.4.0, el valor era 1.

ReflectionMethod::IS_PUBLIC int

Indica que el método es público Anterior a PHP 7.4.0, el valor era 256.

ReflectionMethod::IS_PROTECTED int

Indica que el método es protegido Anterior a PHP 7.4.0, el valor era 512.

ReflectionMethod::IS_PRIVATE int

Indica que el método es privado Anterior a PHP 7.4.0, el valor era 1024.

ReflectionMethod::IS_ABSTRACT int

Indica que el método es abstracto Anterior a PHP 7.4.0, el valor era 2.

ReflectionMethod::IS_FINAL int

Indica que el método es final Anterior a PHP 7.4.0, el valor era 4.

Nota:

El valor de estas constantes puede cambiar entre versiones de PHP. Se recomienda siempre utilizar las constantes y no depender de los valores directamente.

Historial de cambios

Versión Descripción
8.4.0 Las constantes de clase ahora están tipadas.
8.0.0 ReflectionMethod::export() ha sido eliminada.

Tabla de contenidos

Found A Problem?

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

User Contributed Notes 2 notes

up
13
webseiten dot designer at googlemail dot com
15 years ago
Note that the public member $class contains the name of the class in which the method has been defined:
<?php
class A {public function __construct() {}}
class B extends A {}
$method = new ReflectionMethod('B', '__construct');
echo $method->class; // prints 'A'
?>
up
9
Anonymous
5 years ago
We can make a "Automatic dependenci injector" in classes when her constructors depends other classes (with type hint).
<?php
class Dependence1 {
 function foo() {
 echo "foo";
 }
}
class Dependence2 {
 function foo2() {
 echo "foo2";
 }
}
final class myClass
{
 private $dep1;
 private $dep2;
 public function __construct(
 Dependence1 $dependence1, 
 Dependence2 $dependence2
 )
 {
 $this->dep1 = $dependence1;
 $this->dep2 = $dependence2; 
 }
 
}
// Automatic dependence injection (CLASSES)
$constructor = new ReflectionMethod(myClass::class, '__construct');
$parameters = $constructor->getParameters();
$dependences = [];
foreach ($parameters as $parameter) {
 $dependenceClass = (string) $parameter->getType();
 $dependences[] = new $dependenceClass();
}
$instance = new myClass(...$dependences);
var_dump($instance);
?>

Results in: 
object(myClass)#6 (2) {
 ["dep1":"myClass":private]=>
 object(Dependence1)#4 (0) {
 }
 ["dep2":"myClass":private]=>
 object(Dependence2)#5 (0) {
 }
}
+add a note

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