What is the name of the pattern that will ...

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi.

I'm building a class which needs to have certain methods called by the
subclass, but the subclass can extend but not obscure/override the
behaviour.

So, for example, a method AuthRequestMade() will record the activity of
making an authorisation request. It cannot make the actual request as that
is the subclass's job, but, no matter what, I need to have this method
called with the result of the actual auth request.

I want to make building the subclasses as simple and as fool proof as
possible.


I think I have to do something like this ...

interface AuthEnforcer{
 public function AuthRequestMade(&$i_State, &$s_Message);
}

abstract class Auth implements AuthEnforcer{
 public method MakeAuthRequest(){
  // Do my stuff before.
  // Call the SpecificAuth class
  $this->AuthRequestMade($i_State, $s_Message);
  // Do my stuff after with state and message.
 }
}

class SpecificAuth extends Auth{
 public function AuthRequestMade(&$i_State, &$s_Message){
  // Do my specific stuff, setting state and message.
 }
}

But a couple of things I don't like (and don't know how to avoid).

1 - The SpecificAuth::AuthRequestMade is public and I want it protected as
it shouldn't be called from the public scope.
2 - The response is by ref, but I think having a AuthResponse class
containing $i_State and $s_Message should be enough there, but no way to
enforce return types in PHP.

Any ideas?

Thank you.


-- 
Richard Quadling
Twitter : @RQuadling
EE : http://e-e.com/M_248814.html
Zend : http://bit.ly/9O8vFY

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux