Есть ли способ переопределить класс или некоторые его методы без обычного наследования? Например:Методы переопределения класса или класс
class third_party_library {
function buggy_function() {
return 'bad result';
}
function other_functions(){
return 'blah';
}
}
Что я могу сделать, чтобы заменить buggy_function()
? Очевидно, что это то, что я хотел бы сделать
class third_party_library redefines third_party_library{
function buggy_function() {
return 'good result';
}
function other_functions(){
return 'blah';
}
}
Это моя точной дилемма: Я обновил библиотеку третьей стороны, которая разрушает мой код. Я не хочу напрямую изменять библиотеку, так как будущие обновления могут снова сломать код. Я ищу простой способ заменить метод класса.
Я нашел это library, который говорит, что может это сделать, но я насторожен, так как ему 4 года.
EDIT:
я должен уточнить, что я не могу переименовать класс от third_party_library
к magical_third_party_library
или что-либо еще из-за рамочные ограничения.
Для моих целей было бы возможно просто добавить функцию в класс? Я думаю, вы можете сделать это на C# с чем-то, называемым «частичным классом».
PHP не поддерживает это. Вы можете расширить класс и повторно использовать его. Вот и все. Сожалею. – Till 2008-09-26 00:48:12
Можете ли вы переименовать оригинальный класс багги? Переименуйте его в buggy_third_party и выделите его сами, предоставив вашему классу оригинальное имя. – gnud 2008-12-07 13:16:04