0

我不知道我是否可以在这里询问 CMSMadeSimple,但这里可以。我看过其他 CMS 和框架问题。

我正在研究 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  

这些看起来他们几乎什么都不做,或者他们一直在称自己为永远......没有真正的数据库东西可以启动。

我希望通过引用来了解这里的设计。

谢谢你。

4

1 回答 1

2

从 CMSModule 类开始,它看起来像是使用包含来从任何类型的对象中半派生$gCms。看起来它们不是同一类型的对象,或者确实存在无限递归问题。几乎看起来这段 PHP 代码是在 v5 之前开发的,并且继承性很好?可能有一个 CMS 类,但您正在阅读 CMSModule 类,如果这更有意义的话。

详细地说,它只是返回对全局 object 调用function & GetConfig返回的内容的引用。显然,这是为了实现单例模式,以便使用并始终返回一个主要配置。对该配置和数据库的引用也保留(覆盖)到 CMSModule 对象中。这并不总是一个好主意,但在这种情况下确实有意义,因为它通常用于这种类型的应用程序,并且通常用于 php(全局数据库对象等)。->GetConfig()$gCms

于 2010-11-30T21:13:42.257 回答