Sembra un modello di metodo del modello , ma i metodi in questione non sono astratti e la classe figlio non viene costretti a implementarli. Direi che è solo un uso comune dell'ereditarietà o forse un modello di metodo del modello borderline.
Preferirei implementare queste cose tramite eventi / delegati / callback, comunque. È molto più chiaro di cosa puoi connettere e non puoi ignorare accidentalmente il comportamento necessario. È anche più flessibile.
@GSto
Ecco un esempio di utilizzo di callback con PHP. Non è elegante come in altre lingue con supporto di eventi nativi (come le offerte di C # per esempio), ma è flessibile e puoi registrare tali callback nel costruttore di una classe figlia, ad esempio. Questo sito web qui mi ha detto come implementare i callback in PHP, il cuore di esso è call_user_func funzione di PHP. Questo può registrare tutti i gestori che vuoi e qualsiasi cosa con un riferimento all'oggetto può registrare i gestori.
class Model {
protected $_before_create_callbacks = array();
protected $_after_create_callbacks = array();
function register_before_create_handler($callback) {
$this->_before_create_callbacks[] = $callback;
}
function register_after_create_handler($callback) {
$this->_after_create_callbacks[] = $callback;
}
function create(){
$this->before_create();
//logic of create...
$this->after_create();
}
protected function before_create() {
foreach ($this->_before_create_callbacks as $callback){
call_user_func($callback);
}
}
protected function before_create() {
foreach ($this->$_after_create_callbacks as $callback){
call_user_func($callback);
}
}
}
function someFunction(){
logSomething();
}
$anyModel->register_before_create_handler("someFunction");