OOP: prevent method X in context Y

I wanted to know if there was a way to prevent a method in a class being called unless it is called by a specific (non-inheritance chain) object. I’m borrowing from the Zend Bootstrapping pattern:


class abstract Config_Abstract(){
    public function runConfig(){
        //iterate over methods declared in child and execute each in turn
   }
}

class Config extends Config_Abstract(){
   publc function initGood(){
       //do some stuff
   }

   publc function initBad(){
      $this->runConfig(){//VERY BAD - CIRCULAR CODE
      }
   }
}

class Application(){
    public function run(){
        $Config = new Config();
        $Config->runConfig();//should only be executed by Application class
    }
}

$App = new App();
$App->run();

there are two methods I’ve thought of so far, but I wanted to know if Reflection or magic methods had something that could deal with this

1: use debug_backtrace() to detect the calling object
2: pass in a reference to the calling object in the configRun() argument

Can anyone offer some insight?

I’ve just figured it out. The calling class (Application) should be given responsibility for executing runConfig - not the Config class…DOH!
I knew something was smelling…