1<?php
2/*
3 * This file is part of the php-code-coverage package.
4 *
5 * (c) Sebastian Bergmann <sebastian@phpunit.de>
6 *
7 * For the full copyright and license information, please view the LICENSE
8 * file that was distributed with this source code.
9 */
10
11namespace SebastianBergmann\CodeCoverage;
12
13class InvalidArgumentException extends \InvalidArgumentException implements Exception
14{
15    /**
16     * @param int    $argument
17     * @param string $type
18     * @param mixed  $value
19     *
20     * @return InvalidArgumentException
21     */
22    public static function create($argument, $type, $value = null)
23    {
24        $stack = debug_backtrace(0);
25
26        return new self(
27            sprintf(
28                'Argument #%d%sof %s::%s() must be a %s',
29                $argument,
30                $value !== null ? ' (' . gettype($value) . '#' . $value . ')' : ' (No Value) ',
31                $stack[1]['class'],
32                $stack[1]['function'],
33                $type
34            )
35        );
36    }
37}
38