/**
  * Constructor.
  * 
  * @param string  $message  [optional] Exception message. Leave empty to autogenerate a message. Default: `""`.
  * @param integer $code     [optional] Exception code. Default: `0`.
  * @param Exception $previous [optional] Previous exception. Default: `null`.
  */
 public function __construct($message = '', $code = 0, Base_Exception $previous = null)
 {
     if (empty($message)) {
         $trace = Debugger::getPrettyTrace(debug_backtrace());
         if (isset($trace[1])) {
             $message = 'Function "' . $trace[1]['function'] . '" defined in "' . $trace[1]['file'] . '" has not been fully implemented yet.';
         }
     }
     parent::__construct($message, $code, $previous);
 }
 /**
  * Constructor.
  * 
  * @param string $expected Expected type.
  * @param mixed $actual Actual argument given.
  * @param int $number [optional] Argument number.
  * @param bool $hideCaller [optional] Should the function that has thrown this exception be hidden? Default: `false`.
  */
 public function __construct($expected, $actual, $number = 1, $hideCaller = false)
 {
     $trace = Debugger::getPrettyTrace(debug_backtrace());
     $type = Debugger::getType($actual);
     $type = $type === 'string' ? $type . ' ("' . StringUtils::truncate($actual, 50) . '")' : $type;
     if (!$hideCaller && isset($trace[1])) {
         $message = $trace[1]['function'] . ' expected argument ' . $number . ' to be ' . $expected . ', ' . $type . ' given.';
     } else {
         $message = 'Expected argument ' . $number . ' to be ' . $expected . ', ' . $type . ' given.';
     }
     parent::__construct($message);
 }
Exemplo n.º 3
0
 public function testGetPrettyTrace()
 {
     $prettyTrace = Debugger::getPrettyTrace(debug_backtrace());
     $this->assertInternalType('array', $prettyTrace);
     if (!empty($prettyTrace)) {
         foreach ($prettyTrace as $item) {
             $this->assertArrayHasKey('function', $item);
             $this->assertArrayHasKey('file', $item);
             $this->assertArrayHasKey('arguments', $item);
         }
     }
 }