所以我正在使用一个设置类,它扩展了一个类似于“全局设置”的基本设置类。有几个服务,每个服务都有自己的设置类,扩展了抽象的基本设置类。抽象基本设置类对应于服务之间共享的设置。因此,首先我将通过下面的示例进行说明,然后我将定义问题:
例子:
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 文件,以实现我添加的恢复功能,以便可以从上次成功完成的最后一个原子操作继续。为什么我必须这样做——环境的限制。