修订-我有多个类定义分布在文件中(每个文件一个类)。我想做的是;我有一个名为Master
的类,我创建了它的实例,然后Master
对象创建了我定义的其他类的实例。Master
有我所有的属性定义在里面。
在Master
创建的实例中,我希望能够直接从$this
即$this->methodInMaster
中使用Master
的属性/方法,而不需要将Master
的对象传递给新实例,存储它并调用$this->MasterInstance->methodinMaster
。有什么办法可以做到这一点吗?
extends
关键字在这里根本帮不上忙;Master
创建实例的类将继承Master
的属性和方法,但是这些实例对Master
的属性所做的任何更改都不会"保存"在Master
对象中,而只是进行更改的对象。换句话说,这些更改在任何其他类中都是不可见的。
我相信这是不使事物静态的限制,所以没有"实例",但是有没有一种方法来绕过所有这些使用call, set
和get
魔法方法?
Extends不能帮到你,因为它不是你需要的:如果你想要一个可以被许多实例访问的对象,你需要一个Singleton(它让是静态的,因为另一种选择是有一些不切实际的共享单个引用的形式)。对于您想要的结构,您需要一个与Master类不同的Singleton ,但是它可以被Master类访问。基本上你的工作流程将是:
- 在单例中实现你的功能
- 在Master 的方法中访问单例
- 照常扩展Master
这样,子类中的每个调用都将被透明地"重定向"到对单例的调用。这样做不是很优雅(与直接访问子类中的单例相反),但它应该适合您的设计。