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