Как переопределить функцию конструктора и открытую переменную в prestashop 1.6 - PullRequest
0 голосов
/ 06 июня 2018

У меня есть пользовательский модуль, который переопределяет класс Product.Это мой код:

class Product extends ProductCore {
    public $variable;

    public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null) {
        parent::__construct($id_product, $full, $id_lang, $id_shop);

        self::$definition['fields']['variable'] = array('type' => self::TYPE_BOOL, 'validate' => 'isBool');
    }

}

При установке модуля ошибок нет.Но в папке переопределения файла product.php я не вижу

public $variable;

Мне нужно добавить его самостоятельно.В чем проблема?

Спасибо за помощь.

-edit Это вывод кода из ответа ниже.Как вы видите, здесь нет общедоступной переменной $.Почему?

/*
* module: mymodule
* date: 2018-06-06 15:08:01
* version: 1.0.0
*/
public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null) {
    parent::__construct($id_product, $full, $id_lang, $id_shop);
    self::$definition['fields']['variable'] = array('type' => self::TYPE_BOOL, 'validate' => 'isBool');
}

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

решаемая.Чтобы решить эту проблему, вам нужно поставить функцию построения на первое место.В конце добавьте объявление переменной.Как показано ниже.

Класс Product расширяет ProductCore {

public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null)
    {        
        parent::__construct($id_product, $full, $id_lang, $id_shop);
        self::$definition['fields']['variable'] = array('type' => self::TYPE_BOOL, 'validate' => 'isBool');        
    }

public $variable;

}

0 голосов
/ 06 июня 2018

Используйте стандарты кодирования Prestashop для объявления класса (открывающие и закрывающие фигурные скобки в собственной строке), и он правильно проанализирует переопределение.

class Product extends ProductCore
{
    public $variable;

    public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null) 
    {
        parent::__construct($id_product, $full, $id_lang, $id_shop);

        self::$definition['fields']['variable'] = array('type' => self::TYPE_BOOL, 'validate' => 'isBool');
    }
}
...