修订 - 我有多个跨文件的类定义(每个文件一个类)。我想要做的就是这个;我有一个名为Master
的类,我创建了一个实例,然后Master
对象创建了我定义的其余类的实例。 Master
已在其中定义了所有属性。
在Master
创建的实例中,我希望能够直接从Master
即$this
使用$this->methodInMaster
的属性/方法,而无需传递Master
是新实例的对象,存储它并调用$this->MasterInstance->methodinMaster
。有没有办法实现这个目标?
extends
关键字在这里根本没有帮助我; Master
创建实例的类将继承Master
的属性和方法,但这些实例对Master
的属性所做的任何更改都不会在Master
中“保存” object,只是进行更改的对象。换句话说,更改在任何其他类中都不可见。
我认为这是一个限制,不会让事情变得静止,所以没有'实例',但有没有办法使用call, set
和get
魔术方法解决所有这些问题?< / p>
答案 0 :(得分:1)
扩展对您没有帮助,因为它不是您所需要的:如果您想要一个可被多个实例访问的单个对象,您需要Singleton( 是静态的,因为替代方案是有一些不切实际的共享单一参考的形式)。对于你想要的结构,你需要一个与Master类不同的Singleton,但它可以被它访问。基本上你的工作流程将是:
这样,子类中的每个调用都将被透明地“重定向”到对单例的调用。这样做并不是很优雅(而不是直接访问子类中的单例),但它应该适用于您的设计。