20862be7d0
- slim/slim: ^3.1 - symfony/expression-language: ^3.4 - fxp/composer-asset-plugin: ~1.3 - bower-asset/vue: ^2.5 - bower-asset/vue-resource: ^1.5
48 lines
1.3 KiB
PHP
48 lines
1.3 KiB
PHP
<?php
|
|
/**
|
|
* Slim Framework (https://slimframework.com)
|
|
*
|
|
* @link https://github.com/slimphp/Slim
|
|
* @copyright Copyright (c) 2011-2017 Josh Lockhart
|
|
* @license https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
|
|
*/
|
|
namespace Slim;
|
|
|
|
use RuntimeException;
|
|
use Psr\Container\ContainerInterface;
|
|
use Slim\Interfaces\CallableResolverInterface;
|
|
|
|
/**
|
|
* ResolveCallable
|
|
*
|
|
* This is an internal class that enables resolution of 'class:method' strings
|
|
* into a closure. This class is an implementation detail and is used only inside
|
|
* of the Slim application.
|
|
*
|
|
* @property ContainerInterface $container
|
|
*/
|
|
trait CallableResolverAwareTrait
|
|
{
|
|
/**
|
|
* Resolve a string of the format 'class:method' into a closure that the
|
|
* router can dispatch.
|
|
*
|
|
* @param callable|string $callable
|
|
*
|
|
* @return \Closure
|
|
*
|
|
* @throws RuntimeException If the string cannot be resolved as a callable
|
|
*/
|
|
protected function resolveCallable($callable)
|
|
{
|
|
if (!$this->container instanceof ContainerInterface) {
|
|
return $callable;
|
|
}
|
|
|
|
/** @var CallableResolverInterface $resolver */
|
|
$resolver = $this->container->get('callableResolver');
|
|
|
|
return $resolver->resolve($callable);
|
|
}
|
|
}
|