Модуль CMSMadeSimple, PHP и общий вопрос проектирования

Я не знаю, могу ли я спросить о CMSMadeSimple здесь или нет, но здесь идет. Я видел другие вопросы CMS и фреймворка.

Я изучаю код CMSMS, чтобы я мог узнать о создании своей собственной CMS. I think this is really a php and design question but here:

http://phpxref.com/xref/cmsmadesimple/nav.html?_functions/index.html

under CMSModule which is the class all have to inherit from they have this code:

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  

What is that last part saying? Я не понимаю это Especially when lower in the class it has:

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  

These look like they almost do nothing or that they keep calling themself forever....with no real db stuff to boot.

I am hoping to understand the design here with all the calls by reference.

Спасибо.

1 ответ

Начнем с того, что класс CMSModule выглядит так, как будто он использует сдерживание, чтобы полу-наследовать от любого типа объекта $gCms является. Это не похоже на то, что это один и тот же тип объекта, иначе могут возникнуть бесконечные проблемы рекурсии. Похоже, этот код PHP был разработан до v5 и хорошего наследования? Вероятно, есть класс CMS, но вы читаете класс CMSModule, если это имеет больше смысла.

Чтобы разработать, function & GetConfig просто возвращает ссылку на то, что возвращается ->GetConfig() вызов на глобальный объект $gCms, Очевидно, это для реализации одноэлементного шаблона, так что есть одна основная конфигурация, которая используется и всегда возвращается. Ссылка на этот конфиг и базу данных также сохраняется (перезаписывается) в объекте CMSModule. Это не всегда хорошая идея, но имеет смысл в этом случае, так как она обычно используется для приложений такого типа и в целом для php (глобальные объекты БД и т. Д.).

Другие вопросы по тегам