Metabor\Statemachine\Observer\TransitionLogger::update PHP Method

update() public method

See also: SplObserver::update()
public update ( SplSubject $stateMachine )
$stateMachine SplSubject
    public function update(\SplSubject $stateMachine)
    {
        if ($stateMachine instanceof StatemachineInterface) {
            $context = $this->createLoggerContext($stateMachine);
            $message = $this->createLoggerMessage($context);
            $this->logger->log($this->loggerLevel, $message, $context);
        }
    }

Usage Example

 /**
  *
  */
 public function testChangesStatusOnStatefulObjects()
 {
     $subject = new Named('SubjectName');
     $state = new State('stateName');
     $process = new Process('process', $state);
     $stateMachine = new Statemachine($subject, $process);
     $message = 'Transition for "SubjectName" to "stateName"';
     $context = array();
     $context['subject'] = $subject;
     $context['currentState'] = $state;
     $context['lastState'] = null;
     $context['transition'] = null;
     $logger = $this->getMockForAbstractClass('Psr\\Log\\LoggerInterface');
     $logger->expects($this->once())->method('log')->with(LogLevel::INFO, $message, $context);
     $observer = new TransitionLogger($logger);
     $observer->update($stateMachine);
 }