PHP类属性/方法同步


PHP Class Property/Method Synchronization

修订-我有多个类定义分布在文件中(每个文件一个类)。我想做的是;我有一个名为Master的类,我创建了它的实例,然后Master对象创建了我定义的其他类的实例。Master有我所有的属性定义在里面。

Master创建的实例中,我希望能够直接从$this$this->methodInMaster中使用Master的属性/方法,而不需要将Master的对象传递给新实例,存储它并调用$this->MasterInstance->methodinMaster。有什么办法可以做到这一点吗?

extends关键字在这里根本帮不上忙;Master创建实例的类将继承Master的属性和方法,但是这些实例对Master的属性所做的任何更改都不会"保存"在Master对象中,而只是进行更改的对象。换句话说,这些更改在任何其他类中都是不可见的。

我相信这是不使事物静态的限制,所以没有"实例",但是有没有一种方法来绕过所有这些使用call, setget魔法方法?

Extends不能帮到你,因为它不是你需要的:如果你想要一个可以被许多实例访问的对象,你需要一个Singleton(它是静态的,因为另一种选择是有一些不切实际的共享单个引用的形式)。对于您想要的结构,您需要一个与Master类不同的Singleton ,但是它可以被Master类访问。基本上你的工作流程将是:

  • 在单例中实现你的功能
  • 在Master
  • 的方法中访问单例
  • 照常扩展Master

这样,子类中的每个调用都将被透明地"重定向"到对单例的调用。这样做不是很优雅(与直接访问子类中的单例相反),但它应该适合您的设计。