Как я могу переопределить класс с помощью отдельной банки?

Попробуйте это в файле OrderHistoryTable.php:

$this->setTable('default_history.order_history');
5
задан Lawrence Dol 18 November 2012 в 07:28
поделиться

4 ответа

Существует шанс, он будет работать при помещении новой банки ранее в путь к классу, чем исходная банка. Это стоит попробовать, хотя это все еще походит на залог провала - или по крайней мере, действительно трудно для отладки проблем, если так или иначе оба класса загружаются.

Править: Я запланировал записать этот бит ранее, но был прерван к концу поездки на поезде...

Я вернулся бы к клиенту и объяснил бы, что, в то время как то, что они спрашивают, возможно, это может вызвать неожиданные проблемы. Обновление файла банки является намного более безопасной фиксацией с намного меньшим количеством риска. Фразы "неожиданные проблемы" и "риск", вероятно, вызовут тревогу с клиентом, так надо надеяться, они позволят Вам сделать правильную вещь.

11
ответ дан 18 December 2019 в 09:54
поделиться

Да и не, это зависит от Вашей среды.

Если Вы используете, например, OSGi и имеете Ваши версии под управлением, это - просто вопрос установки нового пакета с экспортируемым пакетом в старшей версии (предполагающий, что Ваши диапазоны версии достаточно снисходительны).

При использовании простого Java без необычной пользовательской загрузки класса необходимо быть хорошими для движения, поместив его раньше путь к классу (как другие, уже упомянутые).

Если у Вас действительно будет пользовательская загрузка класса, то необходимо будет удостовериться, что все классы, в которых 'исправленный' класс нуждается, и действительно вся переходная оболочка зависимости, видимы от загрузчика класса, который загружает исправленную версию, которая могла бы означать, что необходимо поставить целое приложение, худший случай.

3
ответ дан 18 December 2019 в 09:54
поделиться

Все ответы, которые предусматривают помещение обновленных классов перед теми, которые они заменяют в пути к классу, корректны, только если исходный JAR не изолируется или подписывается.

2
ответ дан 18 December 2019 в 09:54
поделиться

Да, это может быть возможно путем помещения его раньше путь к классу, чем исходная банка. Однако доверие упорядочиванию Вашего пути к классу не всегда собирается привести к счастью. Я не уверен, документируется ли это даже в Спецификацию Языка Java; в противном случае затем это собирается повредиться для другого JVMs и даже различных версий той же JVM.

Вместо этого полагайте, что заключение в кавычки реалистического периода времени интегрирует новую возможность в текущую кодовую базу. Это - возможно, не ответ, который Вы ищете.

1
ответ дан 18 December 2019 в 09:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: