The best thing to do here is to use a static class. The following code should be instructional:
class MyClass {
function __construct() {
add_action( 'wp_footer', array( $this, 'my_action' ) );
}
function my_action() {
print '<h1>' . __class__ . ' - ' . __function__ . '</h1>';
}
}
new MyClass();
class MyStaticClass {
public static function init() {
add_action( 'wp_footer', array( __class__, 'my_action' ) );
}
public static function my_action() {
print '<h1>' . __class__ . ' - ' . __function__ . '</h1>';
}
}
MyStaticClass::init();
function my_wp_footer() {
print '<h1>my_wp_footer()</h1>';
}
add_action( 'wp_footer', 'my_wp_footer' );
function mfields_test_remove_actions() {
remove_action( 'wp_footer', 'my_wp_footer' );
remove_action( 'wp_footer', array( 'MyClass', 'my_action' ), 10 );
remove_action( 'wp_footer', array( 'MyStaticClass', 'my_action' ), 10 );
}
add_action( 'wp_head', 'mfields_test_remove_actions' );
If you run this code from a plugin you should notice that the method of the StaticClass as well as the function will removed from wp_footer.