Лучший возможный способ избежать этой проблемы - по возможности использовать шаблон Observer, встроенный в Magento.Этого недостаточно в некоторых местах, но когда у вас есть опция, ее использование позволит вам хорошо играть даже с другими плохо поддерживаемыми расширениями.
Затем попробуйте переопределить минимальное количество классов.Это звучит очевидно, но были времена, когда я думал, что необходимо переопределить каждый из классов калькулятора доставки (код был простым, но его нужно было повторить).Еще немного поработав, вместо этого я смог переопределить один класс и избавить себя от головной боли при обслуживании.
Когда вы это сделаете, вы все равно можете столкнуться с конфликтами с другими расширениями, перекрывающими те же классы, что и вы.К сожалению, это не решаемая проблема в Magento, и нет отличного способа решить ее, кроме как связаться с данным человеком и найти решение проблемы.
Наконец, проблема обновления, общаяПроблема, которую я вижу в коде людей, состоит в том, что они, не задумываясь, переопределяют всю функцию, когда в этом нет необходимости.Итак, вы получите следующее:
function doSomethingUseful() {
// ...100 lines of parent code...
unset($result['badKey']);
// ...100 lines of parent code...
return $result;
}
Когда вы перейдете на обновление сайта, это еще 200 строк кода, которые могут вызвать ошибку.Плохие времена!Вместо этого что-то вроде этого часто работает (и является легким улучшением):
function doSomethingUseful() {
$result = parent::doSomethingUseful();
unset($result['badKey']);
return $result;
}
Это быстрее, это более читабельно, это менее подвержено ошибкам, все выигрывают!
Надеюсь, что поможет!
Спасибо, Джо