X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=vendor%2Fbehat%2Fbehat%2Fsrc%2FBehat%2FTestwork%2FCall%2FRuntimeCallee.php;fp=vendor%2Fbehat%2Fbehat%2Fsrc%2FBehat%2FTestwork%2FCall%2FRuntimeCallee.php;h=c764629d274e021b1596af9d482cb4d225c29ce5;hb=1270d9129ce8f27c9b28b10518e32132c58e0aca;hp=0000000000000000000000000000000000000000;hpb=c27c0f0cdaa3f354b1fe54a56ae7e854be6e3f68;p=yaffs-website diff --git a/vendor/behat/behat/src/Behat/Testwork/Call/RuntimeCallee.php b/vendor/behat/behat/src/Behat/Testwork/Call/RuntimeCallee.php new file mode 100644 index 000000000..c764629d2 --- /dev/null +++ b/vendor/behat/behat/src/Behat/Testwork/Call/RuntimeCallee.php @@ -0,0 +1,132 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Behat\Testwork\Call; + +use Behat\Testwork\Call\Exception\BadCallbackException; +use ReflectionFunction; +use ReflectionFunctionAbstract; +use ReflectionMethod; + +/** + * Represents callee created and executed in the runtime. + * + * @author Konstantin Kudryashov + */ +class RuntimeCallee implements Callee +{ + /** + * @var callable + */ + private $callable; + /** + * @var null|string + */ + private $description; + /** + * @var ReflectionFunctionAbstract + */ + private $reflection; + /** + * @var string + */ + private $path; + + /** + * Initializes callee. + * + * @param callable $callable + * @param null|string $description + * + * @throws BadCallbackException If invalid callback provided + */ + public function __construct($callable, $description = null) + { + if (!is_array($callable) && !is_callable($callable)) { + throw new BadCallbackException(sprintf( + '%s expects a valid callable, but `%s` given', + get_class($this), + gettype($callable) + ), $callable); + } + + if (is_array($callable)) { + $this->reflection = new ReflectionMethod($callable[0], $callable[1]); + $this->path = $callable[0] . '::' . $callable[1] . '()'; + } else { + $this->reflection = new ReflectionFunction($callable); + $this->path = $this->reflection->getFileName() . ':' . $this->reflection->getStartLine(); + } + + $this->callable = $callable; + $this->description = $description; + } + + /** + * Returns callee description. + * + * @return string + */ + public function getDescription() + { + return $this->description; + } + + /** + * Returns callee definition path. + * + * @return string + */ + public function getPath() + { + return $this->path; + } + + /** + * Returns callable. + * + * @return callable + */ + public function getCallable() + { + return $this->callable; + } + + /** + * Returns callable reflection. + * + * @return ReflectionFunctionAbstract + */ + public function getReflection() + { + return $this->reflection; + } + + /** + * Returns true if callee is a method, false otherwise. + * + * @return Boolean + */ + public function isAMethod() + { + return $this->reflection instanceof ReflectionMethod; + } + + /** + * Returns true if callee is an instance (non-static) method, false otherwise. + * + * @return Boolean + */ + public function isAnInstanceMethod() + { + return $this->reflection instanceof ReflectionMethod + && !$this->reflection->isStatic(); + } +}