Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php declare(strict_types=1);
2
 
3
namespace Invoker\Exception;
4
 
5
/**
6
 * The given callable is not actually callable.
7
 */
8
class NotCallableException extends InvocationException
9
{
10
    /**
11
     * @param mixed $value
12
     */
13
    public static function fromInvalidCallable($value, bool $containerEntry = false): self
14
    {
15
        if (is_object($value)) {
16
            $message = sprintf('Instance of %s is not a callable', get_class($value));
17
        } elseif (is_array($value) && isset($value[0], $value[1])) {
18
            $class = is_object($value[0]) ? get_class($value[0]) : $value[0];
19
 
20
            $extra = method_exists($class, '__call') || method_exists($class, '__callStatic')
21
                ? ' A __call() or __callStatic() method exists but magic methods are not supported.'
22
                : '';
23
 
24
            $message = sprintf('%s::%s() is not a callable.%s', $class, $value[1], $extra);
25
        } elseif ($containerEntry) {
26
            $message = var_export($value, true) . ' is neither a callable nor a valid container entry';
27
        } else {
28
            $message = var_export($value, true) . ' is not a callable';
29
        }
30
 
31
        return new self($message);
32
    }
33
}