Можно ли заменить функцию в классе PHP?

Это на самом деле происходит из конкретной проблемы WordPress, но есть более общий PHP-элемент, за который мне интересно узнать ответ.

Класс WordPress выполняется следующим образом:

class Tribe_Image_Widget extends WP_Widget { function example_function(){ // do something useful } } 

Есть ли способ PHP в том, что я могу заменить example_function() извне класса?

Причина, по которой я хочу сделать это, состоит в том, что класс принадлежит другому плагину WP (и имеет несколько функций в классе), и я хочу продолжать получать обновления плагина, но хочу, чтобы одна из функций была адаптирована. Если я изменю плагин, я каждый раз потеряю все свои собственные изменения. SO, если у меня есть свой собственный плагин, который просто меняет одну функцию, я избегаю этой проблемы.

Solutions Collecting From Web of "Можно ли заменить функцию в классе PHP?"

Похоже, что вы хотите extend класс и переопределить эту конкретную функцию.

 Class Your_Tribe_Image_Widget extends Tribe_Image_Widget { function example_function() { // Call the base class functionality // If necessary... parent::example_function(); // Do something else useful } } 

Вероятно , вы можете включить include_once в целевой плагин в верхней части вашего файла, а затем расширить класс целевого плагина вместо класса WP_Widget:

 include_once otherPlugin.php class My_Awesome_Plugin_Overloaded extends Someone_Elses_Awesome_Plugin{ function example_function(){ return 'woot'; } } 

Пока метод в существующем классе не был помечен как окончательный, вы можете просто подклассы и переопределить его

 class My_Tribe_Image_Widget extends Tribe_Image_Widget { //override this method function example_function(){ // do something useful } }