gpt4 book ai didi

PHP 从子类中获取覆盖的方法

转载 作者:可可西里 更新时间:2023-11-01 12:28:55 27 4
gpt4 key购买 nike

给定以下情况:

<?php

class ParentClass {

public $attrA;
public $attrB;
public $attrC;

public function methodA() {}
public function methodB() {}
public function methodC() {}

}

class ChildClass extends ParentClass {

public $attrB;

public function methodA() {}
}

如何获取在 ChildClass 中被覆盖的方法列表(最好是类变量)?

谢谢,乔

编辑:修复了错误的扩展。任何方法,而不仅仅是公共(public)方法。

最佳答案

反射是正确的,但你必须这样做:

$child  = new ReflectionClass('ChildClass');

// find all public and protected methods in ParentClass
$parentMethods = $child->getParentClass()->getMethods(
ReflectionMethod::IS_PUBLIC ^ ReflectionMethod::IS_PROTECTED
);

// find all parent methods that were redeclared in ChildClass
foreach($parentMethods as $parentMethod) {
$declaringClass = $child->getMethod($parentMethod->getName())
->getDeclaringClass()
->getName();

if($declaringClass === $child->getName()) {
echo $parentMethod->getName(); // print the method name
}
}

Properties 也一样,只是您会使用 getProperties() 代替。

关于PHP 从子类中获取覆盖的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2669046/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com