由於prestashop 升級了1.5.x, 而且佢把入面基本的core 也作出了不少的改動,就連最基本的object class 也改了寫法呢, 當然舊有的寫法還是可以support的, 但新的寫法感覺上不錯而且也更易明,所以就記下新的寫法吧!可以在這裏回憶一下舊的寫法
如果嘗試睇一下ObjectModel這個class就會發現了很多東西也是 @deprecated 1.5.0呢, 其中包括了很多在筆記一所提到的變數呢
從入面可以睇到好多的變數也改變成在definition中設,那就看看我重新寫的object class
除此之外,在筆記一中提到要建立的getFields及getTranslationsFieldsChild來到1.5+後也不用自己寫了
所以雖然1.5+的確作出了不少的改動,但感覺上在object class 的一part是改得不錯,因為整體來說佢係更加易明同整潔了呢
/** * @deprecated 1.5.0 This property shouldn't be overloaded anymore in class, use static $definition['table'] property instead */ protected $table; /** * @deprecated 1.5.0 This property shouldn't be overloaded anymore in class, use static $definition['primary'] property instead */ protected $identifier; /** * @deprecated 1.5.0 This property shouldn't be overloaded anymore in class, use static $definition['fields'] property instead */ protected $fieldsRequired = array(); /** * @deprecated 1.5.0 This property shouldn't be overloaded anymore in class, use static $definition['fields'] property instead */ protected $fieldsSize = array(); /** * @deprecated 1.5.0 This property shouldn't be overloaded anymore in class, use static $definition['fields'] property instead */ protected $fieldsValidate = array(); /** * @deprecated 1.5.0 This property shouldn't be overloaded anymore in class, use static $definition['fields'] property instead */ protected $fieldsRequiredLang = array(); /** * @deprecated 1.5.0 This property shouldn't be overloaded anymore in class, use static $definition['fields'] property instead */ protected $fieldsSizeLang = array(); /** * @deprecated 1.5.0 This property shouldn't be overloaded anymore in class, use static $definition['fields'] property instead */ protected $fieldsValidateLang = array();
從入面可以睇到好多的變數也改變成在definition中設,那就看看我重新寫的object class
public static $definition = array( 'table' => 'product_fast_get_discount', 'primary' => 'id_pfgd', 'fields' => array( 'id_product' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'required' => true), 'position' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'required' => true), 'reduction' => array('type' => self::TYPE_FLOAT, 'validate' => 'isPrice', 'required' => true), 'reduction_type' => array('type' => self::TYPE_STRING, 'validate' => 'isReductionType', 'required' => true), 'from' => array('type' => self::TYPE_DATE, 'validate' => 'isDateFormat', 'required' => false), 'to' => array('type' => self::TYPE_DATE, 'validate' => 'isDateFormat', 'required' => false) ) );新的Object class, 只要設定好definition這個static 變數就可以了,因為入面的'table', 'primary', 'fields' 就已經包含了第筆記一中提到的那些設定..
除此之外,在筆記一中提到要建立的getFields及getTranslationsFieldsChild來到1.5+後也不用自己寫了
所以雖然1.5+的確作出了不少的改動,但感覺上在object class 的一part是改得不錯,因為整體來說佢係更加易明同整潔了呢
0 回應:
Post a Comment