I have got a wordpress plugin that's declared and hooked following guidelines referred to within this related question:

http://stackoverflow.com/questions/1615118/wordpress-accessing-a-plugins-function-from-a-theme

Therefore it looks (platonically) such as this:

if ( !class_exists( 'Foo' ) ) {
  class Foo {
    ...
    public function do_stuff() {
      // does stuff
    }
  }
}

if ( class_exists( 'Foo' ) ) {
  $MyFoo = new Foo();
}

Now, basically call $MyFoo->do_stuff() from the theme file, for example, say, single.php, $MyFoo actually *does_stuff* and that i begin to see the output within the page.

However, basically write a function in functions.php that really wants to call $MyFoo->do_stuff() after which call that function from single.php the item isn't found. To sum up,

Works:

in themes/my_theme/single.php:
  if (isset($MyFoo))
    $MyFoo->do_stuff();

Doesn't work:

in themes/my_theme/functions.php:
  function do_some_foo_stuff() {
    ...
    if (isset($MyFoo)) {
       $MyFoo->do_stuff();
    } else {
       echo "no MyFoo set";
    }
    ...
  }
 themes/my_theme/single.php:
   if (isset($MyFoo))
     do_some_foo_stuff();

Results -> "no MyFoo set"

This might be totally no surprise, but it is something I wantOrwish to work, therefore if anybody can explain what's going on it would be appreciated. Why can't the theme's functions file (or any other wordpress plugin files in mu-plug ins for your matter) find $MyFoo object?

Educate yourself on variable scope. The variable $MyFoo isn't accessible inside the function do_some_foo_stuff() unless of course you declare it global first

function do_some_foo_stuff()
{
    global $MyFoo;
    ...
}