PHP Objects, Patterns and Practice (3rd edition)

(Barry) #1

CHAPTER 12 ■ ENTERPRISE PATTERNS


$req->setProperty( 'cmd', $forward );
}
return $forward;
}


private function getResource( Request $req,
$res ) {
// get the previous command and its execution status
$cmd_str = $req->getProperty( 'cmd' );
$previous = $req->getLastCommand();
$status = $previous->getStatus();
if (! $status ) { $status = 0; }
$acquire = "get$res";
// find resource for previous command and its status
$resource = $this->controllerMap->$acquire( $cmd_str, $status );
// alternatively find resource for command and status 0
if (! $resource ) {
$resource = $this->controllerMap->$acquire( $cmd_str, 0 );
}


// or command 'default' and command status
if (! $resource ) {
$resource = $this->controllerMap->$acquire( 'default', $status );
}


// all else has failed get resource for 'default', status 0
if (! $resource ) {
$resource = $this->controllerMap->$acquire( 'default', 0 );
}


return $resource;
}


function getCommand( Request $req ) {
$previous = $req->getLastCommand();
if (! $previous ) {
// this is the first command this request
$cmd = $req->getProperty('cmd');
if (! $cmd ) {
// no cmd property - using default
$req->setProperty('cmd', 'default' );
return self::$default_cmd;
}
} else {
// a command has been run already in this request
$cmd = $this->getForward( $req );
if (! $cmd ) { return null; }
}

Free download pdf