ReflectionMethod 类
(PHP 5, PHP 7, PHP 8)
简介
ReflectionMethod 类报告有关方法的信息。
类摘要
/* 常量 */
/* 属性 */
/* 继承的属性 */
/* 方法 */
/* 继承的方法 */
}属性
- name
-
方法名
- class
-
类名
预定义常量
ReflectionMethod 修饰符
-
ReflectionMethod::IS_STATIC
int -
表示该方法是 static。在 PHP 7.4.0 之前,值为
1
。 -
ReflectionMethod::IS_PUBLIC
int -
表示该方法是 public。在 PHP 7.4.0 之前,值为
256
。 -
ReflectionMethod::IS_PROTECTED
int -
表示该方法是 protected。在 PHP 7.4.0 之前,值为
512
。 -
ReflectionMethod::IS_PRIVATE
int -
表示该方法是 private。在 PHP 7.4.0 之前,值为
1024
。 -
ReflectionMethod::IS_ABSTRACT
int -
表示该方法是 abstract。PHP 7.4.0 之前,值为
2
。 -
ReflectionMethod::IS_FINAL
int -
表示该方法是 final。PHP 7.4.0 之前,值为
4
。
注意:
这些常量的值可能会在不同 PHP 版本间发生更改。建议始终使用常量而不直接依赖值。
更新日志
版本 | 说明 |
---|---|
8.4.0 | 所有类常量现已类型化。 |
8.0.0 | 已移除 ReflectionMethod::export()。 |
目录
- ReflectionMethod::__construct — 构造 ReflectionMethod
- ReflectionMethod::createFromMethodName — Creates a new ReflectionMethod
- ReflectionMethod::export — 导出 reflection 方法
- ReflectionMethod::getClosure — 返回动态建立的方法调用接口(译者注:可以使用这个返回值直接调用非公开方法)
- ReflectionMethod::getDeclaringClass — 获取被反射的方法所在类的反射实例
- ReflectionMethod::getModifiers — 获取方法的修饰符
- ReflectionMethod::getPrototype — 返回方法原型 (如果存在)
- ReflectionMethod::hasPrototype — Returns whether a method has a prototype
- ReflectionMethod::invoke — Invoke
- ReflectionMethod::invokeArgs — 带参数执行
- ReflectionMethod::isAbstract — 判断方法是否是抽象方法
- ReflectionMethod::isConstructor — 判断方法是否是构造方法
- ReflectionMethod::isDestructor — 判断方法是否是析构方法
- ReflectionMethod::isFinal — 判断方法是否定义 final
- ReflectionMethod::isPrivate — 判断方法是否是私有
- ReflectionMethod::isProtected — 判断方法是否是 protected
- ReflectionMethod::isPublic — 判断方法是否是 public
- ReflectionMethod::setAccessible — 设置方法是否可访问
- ReflectionMethod::__toString — 返回反射方法对象的字符串表达
+添加备注
用户贡献的备注 2 notes
webseiten dot designer at googlemail dot com ¶
13 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'
?>
Anonymous ¶
4 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) {
}
}
备份地址:http://www.lvesu.com/blog/php/class.reflectionmethod.php