1<?php 2 3namespace League\Tactician\Exception; 4 5/** 6 * Thrown when a specific handler object can not be used on a command object. 7 * 8 * The most common reason is the receiving method is missing or incorrectly 9 * named. 10 */ 11class CanNotInvokeHandlerException extends \BadMethodCallException implements Exception 12{ 13 /** 14 * @var mixed 15 */ 16 private $command; 17 18 /** 19 * @param mixed $command 20 * @param string $reason 21 * 22 * @return static 23 */ 24 public static function forCommand($command, $reason) 25 { 26 $type = is_object($command) ? get_class($command) : gettype($command); 27 28 $exception = new static( 29 'Could not invoke handler for command ' . $type . 30 ' for reason: ' . $reason 31 ); 32 $exception->command = $command; 33 34 return $exception; 35 } 36 37 /** 38 * Returns the command that could not be invoked 39 * 40 * @return mixed 41 */ 42 public function getCommand() 43 { 44 return $this->command; 45 } 46} 47