【发布时间】:2011-12-02 09:30:14
【问题描述】:
已修订 - 我有多个跨文件的类定义(每个文件一个类)。我想做的是这个;我有一个名为Master 的类,我创建了一个实例,然后Master 对象创建了我定义的其余类的实例。 Master 里面定义了我的所有属性。
在Master 创建的实例中,我希望能够直接从$this 使用Master 的属性/方法,即$this->methodInMaster,而无需将Master 的对象传递给新实例,存储它,然后调用$this->MasterInstance->methodinMaster。有什么方法可以实现吗?
extends 关键字在这里根本没有帮助; Master 创建实例的类将继承 Master 的属性和方法,但是这些实例对 Master 的属性所做的任何更改都不会“保存”在 Master 对象中,只是创建的对象变化。换句话说,这些更改在任何其他类中都不可见。
我认为这是一个限制,不能使事物静态化,因此没有“实例”,但有没有办法使用 call, set 和 get 魔术方法解决所有这些问题?
【问题讨论】:
-
您确认确实如此吗?这违背了继承的整个理念。
-
我不确定你想要实现什么,但从类扩展只是扩展方法和字段而不是对象实例。也许你应该尝试一些设计模式链接代理或工厂?
-
Viruzzo 这是 PHP 的行为,我也不明白。基本上我想做的是我有很多类分布在多个文件中。我已将大部分属性放在一个类中,并且我希望能够通过
$this->property在其他类中访问它们,而无需引用实例。__get(), __set() and __call似乎是要走的路(?),但我想不出办法。 -
我宁愿在我的代码 Jack 中没有任何静态的东西,因为会有多个 every 类的实例
标签: php inheritance object extends