Автор Тема: Не могу сделать Override  (Прочитано 291 раз)

05 Январь 2022, 14:22:21
  • Старожил
  • ****
  • Сообщений: 259
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте
Возникла необходимость изменить метод Db::getInstance().
Правки внес прямо в родной класс - все работает как надо.
Решил сделать "как положено", т.е. переопределить метод.
В папке override/classes/db создал файл Db.php такого содержания
class Db extends DbCore
{
    function getInstance($master = 0)
    {
     ...
     }
}
Престашоп "не замечает" мои действия и выполняет родной метод.
Что не так делаю?
Спасибо
05 Январь 2022, 18:40:37
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Override не вовсех версиях prestashop работает. У вас версия какая?
05 Январь 2022, 18:51:02
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
В папке override/classes/db создал файл Db.php такого содержания
class Db extends DbCore
{
    function getInstance($master = 0)
    {
     ...
     }
}
Попробуйте так
abstract class Db extends DbCore
{
...
}
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
05 Январь 2022, 19:02:46
Ответ #3
  • Старожил
  • ****
  • Сообщений: 259
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Override не вовсех версиях prestashop работает. У вас версия какая?
С версией все норм. Просто я, как дебил, уже в 100500-й раз забыл очистить кэш.
После очистки появилась ошибка
Fatal error: Class Db contains 14 abstract methods and must therefore be declared abstract or implement the remaining methods...Начал гуглить и почти одновременно с ответом PrestaMan нашел предложенное им решение
Попробуйте так
abstract class Db extends DbCore
{
...
}
Сейчас все заработало, всем спасибо.