Jump to content

OOP: prevent method X in context Y


sunwukung

Recommended Posts

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?

Link to comment
https://forums.phpfreaks.com/topic/198091-oop-prevent-method-x-in-context-y/
Share on other sites

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

 

No. What are you actually trying to accomplish quite possible there is just a problem with your app design and we can correct it.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.