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?