因此,假设我有一个核心程序类,它实例化一个Page
对象。
此Page
对象具有属性$id
(这是我们当前所在页面的页面ID)。
在Page
类中,它在数据库中查找并通过实例化Template
对象为页面设置模板。
在这个Template
对象中,我想放入一个内容块。这由我在Content
类中实现的Template
类处理。
现在,要使此内容正常工作,我需要能够从程序核心所拥有的$id
对象中获取Page
。有没有办法做到这一点?通过页面ID似乎相当繁琐,特别是当它到达它时,类之间可能有10层?
如果我将$ id变量设为静态(static $id;
),那么我可以使用Page::$id
再次获取它而不必访问我设置它的对象的实际实例吗?
谢谢
汤姆
答案 0 :(得分:2)
您所追求的内容通常由“dependency injection”处理。在模板构造函数中创建Page
对象时,传递像Template
对象这样的对象是很常见的。 Page对象本身可以是Template的属性,也可以只是其$ id属性。因此,没有必要在每个函数调用中传入id。
Template::__construct($Page)
如果Template类与Page类相关,它还可以扩展Page类,如果该属性为Page::$id
或protected
,它就可以访问public
。