我不知道我是否可以在这里询问关于CMSMadeSimple的问题,但这里是这样的。
我正在学习CMSMS的代码,这样我就可以学习如何制作自己的CMS。我认为这真的是一个php和设计问题,但这里:
http://phpxref.com/xref/cmsmadesimple/nav.html?_functions/index.html
在CMSModule下,所有的类都必须继承,它们有这样的代码:
class CMSModule
479 {
480 /**
481 * ------------------------------------------------------------------
482 * Initialization Functions and parameters
483 * ------------------------------------------------------------------
484 */
485 var $cms;
486 var $curlang;
487 var $langhash;
488 var $params;
.....
509 function CMSModule()
510 {
511 global $gCms;
512 $this->cms =& $gCms;
513 $this->config =& $gCms->GetConfig();
514 我不明白。
753 /**
754 * Returns the cms->config object as a reference
755 */
756 function & GetConfig()
757 {
758 global $gCms;
759 $config = &$gCms->GetConfig();
760 return $config;
761 }
762
763 /**
764 * Returns the cms->db object as a reference
765 */
766 function & GetDb()
767 {
768 global $gCms;
769 $db = &$gCms->GetDb();
770 return $db;
771 }
772 这些看起来像是他们几乎什么都不做,或者他们一直称自己为forever....with,没有真正的db东西可以引导。
我希望通过引用来理解这里的所有调用的设计。
谢谢。
发布于 2010-12-01 05:13:42
首先,CMSModule类看起来像是在使用包含来半派生自任何类型的对象$gCms。它们看起来不像是同一类型的对象,或者确实会有无限的递归问题。看起来这段PHP代码是在v5和良好的继承之前开发的?可能有一个CMS类,但您正在阅读CMSModule类,如果这更有意义的话。
更详细地说,function & GetConfig只是返回对全局对象$gCms上的->GetConfig()调用所返回内容的引用。显然,这是为了实现一个singleton模式,这样就有了一个使用并始终返回的主配置。对该配置和db的引用也被保留(覆盖)到CMSModule对象中。这个isn't总是一个很好的想法,但在这种情况下确实有意义,因为它通常用于这种类型的应用程序,通常在php中(全局数据库对象等)。
https://stackoverflow.com/questions/4318242
复制相似问题