Не могу сделать Override

Автор Огонек, 05 января 2022, 14:22:21

« назад - далее »

Огонек

Здравствуйте
Возникла необходимость изменить метод Db::getInstance().
Правки внес прямо в родной класс - все работает как надо.
Решил сделать "как положено", т.е. переопределить метод.
В папке override/classes/db создал файл Db.php такого содержания

class Db extends DbCore
{
    function getInstance($master = 0)
    {
     ...
     }
}

Престашоп "не замечает" мои действия и выполняет родной метод.
Что не так делаю?
Спасибо

mistral

Override не вовсех версиях prestashop работает. У вас версия какая?

PrestaMan

Цитата: Огонек от 05 января 2022, 14:22:21
В папке override/classes/db создал файл Db.php такого содержания

class Db extends DbCore
{
    function getInstance($master = 0)
    {
     ...
     }
}

Попробуйте так
abstract class Db extends DbCore
{
...
}
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

Огонек

Цитата: mistral от 05 января 2022, 18:40:37
Override не вовсех версиях prestashop работает. У вас версия какая?
С версией все норм. Просто я, как дебил, уже в 100500-й раз забыл очистить кэш.
После очистки появилась ошибка
Fatal error: Class Db contains 14 abstract methods and must therefore be declared abstract or implement the remaining methods...
Начал гуглить и почти одновременно с ответом PrestaMan нашел предложенное им решение
Цитата: PrestaMan от 05 января 2022, 18:51:02
Попробуйте так
abstract class Db extends DbCore
{
...
}

Сейчас все заработало, всем спасибо.