2010-11-30 19 views
0

CMSMadeSimpleについて質問することができますか?私は他のCMSとフレームワークの質問を見てきました。CMSMadeSimpleモジュール、PHP、および一般的な設計の質問

私は自分のCMSを作ることについて学ぶことができるようにCMSMSのコードを勉強しています。最後の部分ということです何

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 

:クラスがすべてですCMSModule下

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

が、彼らはこのコードを持っているから継承する必要があります:私はこれは本当にここにPHPとデザインの問題が、だと思います言って?私はそれを理解していない。それが持っているクラスの場合は特に下:彼らはほとんど何もしないよう

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 

これらは見えるか、彼らが起動するように本当のデシベルのものと....永遠にその人自身を呼び出しておくこと。

ここではすべての呼び出しを参照してデザインを理解したいと考えています。

ありがとうございます。

答えて

2

CMSModuleクラスで始まるのは、オブジェクトのタイプが$gCmsであれば、包含から半導出を使用しているようです。彼らは同じ種類のオブジェクトであるかのように見えません。あるいは、実際には無限の再帰問題が存在します。これは、PHPコードがv5より前に開発されたこととほぼ同じように見えます。おそらくCMSクラスがありますが、それが理にかなっていれば、CMSModuleクラスを読み込んでいます。

具体的には、function & GetConfigは、グローバルオブジェクト$gCms->GetConfig()コールによって返されたものへの参照を返すだけです。明らかに、これはsingletonパターンを実装するため、使用され、常に返される1つの主な構成があるようです。そのconfigとdbへの参照もCMSModuleオブジェクトに保持されます(上書きされます)。このisn'tは常に素晴らしいアイデアですが、このタイプのアプリケーションやPHP一般(グローバルdbオブジェクトなど)でよく使用されるため、この場合は理にかなっています。

関連する問題