【发布时间】:2013-01-16 05:11:43
【问题描述】:
所以我正在使用一个设置类,它扩展了一个类似于“全局设置”的基本设置类。有几个服务,每个服务都有自己的设置类,扩展了抽象的基本设置类。抽象基本设置类对应于服务之间共享的设置。所以首先我会用下面的例子来说明,然后我会定义问题:
示例:
abstract class BaseSettings {
protected $settingA;
protected $settingB;
}
class MyServiceSettings extends BaseSettings {
private $settingC;
public $settingD;
}
问题:
如果我像这样创建一个 ReflectionClass 实例..
$reflect = new ReflectionClass($this);
..来自 MyServiceSettings 类或 BaseSettings 类(因为显然你不能拥有抽象类的实例),$reflect->getProperties() 将始终返回 MyServiceSettings 和 BaseSettings 的属性(我猜这是合适的因为我们实际上是在使用一个具体的类)
现在我确信我可以创建一个空类来扩展抽象 BaseClass 以确定哪些属性去哪里(或者只是摆脱抽象并创建 BaseClass 的实例),但这看起来相当混乱,所以我我想知道是否有更优雅的方法来确定哪些属性属于父类,哪些属于子类?
如果您好奇我为什么要这样做 - 我正在将设置序列化为 .json 文件,以实现我添加的恢复功能,以便人们可以从最后一次成功完成的原子操作继续。为什么我必须这样做——环境的限制。
【问题讨论】:
标签: php reflection