View Single Post
Old 04-09-2010, 10:05 AM   #1 (permalink)
sunwukung
The Wanderer
 
sunwukung's Avatar
 
Join Date: Jul 2009
Location: Bristol
Posts: 8
Thanks: 0
sunwukung is on a distinguished road
Default 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:

Code:
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?
sunwukung is offline  
Reply With Quote