久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

PrestaShop ObjectModel講解

來自站長百科
Spider.flynn討論 | 貢獻2010年3月3日 (三) 11:25的版本 (新頁面: '''ObjectModel''' 是PrestaShop系統(tǒng)中的一個非常重要的抽象類(相信了解JAVA,C++等高級語言的朋友,對抽象類不陌生),準確的說它是一...)
(差異) ←上一版本 | 最后版本 (差異) | 下一版本→ (差異)
跳轉(zhuǎn)至: 導航、? 搜索

ObjectModelPrestaShop系統(tǒng)中的一個非常重要的抽象類(相信了解JAVAC++等高級語言的朋友,對抽象類不陌生),準確的說它是一個包含了數(shù)據(jù)表CURD基本操作的工具類。

我愿意稱這個類是一個比較別扭的base model,它包含了數(shù)據(jù)表的描述基本描述、CURD操作、常規(guī)的數(shù)據(jù)驗證服務等。

相信有些朋友跟我一樣,已經(jīng)對Presta學習有些日子了,大家都會發(fā)現(xiàn)只要界面表單中的元素的名稱與表中的字段名稱一致,系統(tǒng)就會自動識別出入庫數(shù)據(jù)。其實并不是這樣的。這主要是依賴兩個重要的方法來完成的,getFields、copyFromPost.

getFields 是 ObjectModel 并無實現(xiàn)的方法體,繼承ObjectModel的對象類必須針對其自身的需求,建立字段數(shù)組,以便系統(tǒng)使用,同時需要對字段數(shù)組中的字段作顯式聲明。

  class  Category extends ObjectModel {  
  public $id_parent = 0;  
        
      public $name;  
        
      public $level_depth = 0;  
        
      public $position;  
        
      public $active;  
        
      public $date_add;  
        
      public $date_upd;  
                  ..........................  
  public function getFields() {  
          parent::validateFields ();  
          if (isset ( $this->id ))  
              $fields ['id_category'] = intval ( $this->id );  
          $fields ['id_parent'] = intval ( $this->id_parent );  
          $fields ['name'] = pSQL ( $this->name );  
          $fields ['level_depth'] = intval ( $this->level_depth );  
          $fields ['date_add'] = pSQL ( $this->date_add );  
          $fields ['date_upd'] = pSQL ( $this->date_upd );  
            
          return $fields;  
      }  
  }  

另一個重要的函數(shù)處于classes/Tools.class.php中,copyFromPost。

copyFromPost負責把提交過來的表單數(shù)據(jù),填充至ObjectModel的子類。它的工作原理是非常簡單,遍歷POST中的變量,并判斷 ObjectModel子類中是否存在該變量,存在則賦值。這樣就完成了對象的數(shù)據(jù)填充,系統(tǒng)再通過getFields方法是提取需要操作的數(shù)據(jù)。

  static  function copyFromPost(&$object) {  
          /* Classical fields */  
          foreach ( $_POST as $key => $value )  
              if (key_exists ( $key, $object )) {  
                  /* Do not take care of password field if empty */  
                  if ($key == 'passwd' and Tools::getValue ( $this->identifier ) and empty ( $value ))  
                      continue;  
                      /* Automatically encrypt password in MD5 */  
                  if ($key == 'passwd' and ! empty ( $value ))  
                      $value = Tools::encrypt ( $value );  
                  $object->{$key} = $value;  
              }  
      }  

注:# key_exists(PHP內(nèi)置函數(shù)),用于是判斷對象是否存在是目前屬性。

相關(guān)條目[ ]

參考來源[ ]