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();

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…