本文整理汇总了PHP中Reflector::getStartLine方法的典型用法代码示例。如果您正苦于以下问题:PHP Reflector::getStartLine方法的具体用法?PHP Reflector::getStartLine怎么用?PHP Reflector::getStartLine使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Reflector
的用法示例。
在下文中一共展示了Reflector::getStartLine方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: _make_internal_message
protected function _make_internal_message(\Reflector $reflection) {
$type = false;
$name = false;
$location = false;
if($reflection instanceof \ReflectionFunction) {
$type = 'function';
$name = $reflection->name;
}
elseif($reflection instanceof \ReflectionClass) {
$type = 'class';
$name = $reflection->name;
}
elseif($reflection instanceof \ReflectionMethod) {
$type = 'method';
$name = $reflection->getDeclaringClass()->name . '::' . $reflection->name;
}
$location = $reflection->getFileName() . ':' . $reflection->getStartLine();
Ev\Evaluer::make_internal_from(
Ev\Evaluer::SOURCE_OUTPUT,
sprintf("Source Code for %s '%s' (%s)", $type, $name, $location)
);
}
示例2: __construct
/**
* Constructor
*
* @param Reflector|string $commentOrReflector
*/
public function __construct($commentOrReflector)
{
if ($commentOrReflector instanceof Reflector) {
$this->_reflector = $commentOrReflector;
if (!method_exists($commentOrReflector, 'getDocComment')) {
// require_once 'Zend/Reflection/Exception.php';
throw new Zend_Reflection_Exception('Reflector must contain method "getDocComment"');
}
$docComment = $commentOrReflector->getDocComment();
$lineCount = substr_count($docComment, "\n");
$this->_startLine = $this->_reflector->getStartLine() - $lineCount - 1;
$this->_endLine = $this->_reflector->getStartLine() - 1;
} elseif (is_string($commentOrReflector)) {
$docComment = $commentOrReflector;
} else {
// require_once 'Zend/Reflection/Exception.php';
throw new Zend_Reflection_Exception(get_class($this) . ' must have a (string) DocComment or a Reflector in the constructor');
}
if ($docComment == '') {
// require_once 'Zend/Reflection/Exception.php';
throw new Zend_Reflection_Exception('DocComment cannot be empty');
}
$this->_docComment = $docComment;
$this->_parse();
}
示例3: __construct
/**
* Constructor
*
* @param Reflector|string $commentOrReflector
* @param AnnotationManager|null $annotationManager
* @return \Zend\Code\Reflection\DocBlockReflection
*/
public function __construct($commentOrReflector, AnnotationManager $annotationManager = null)
{
if ($commentOrReflector instanceof \Reflector) {
$this->reflector = $commentOrReflector;
if (!method_exists($commentOrReflector, 'getDocComment')) {
throw new Exception\InvalidArgumentException('Reflector must contain method "getDocComment"');
}
$this->docComment = $commentOrReflector->getDocComment();
$lineCount = substr_count($this->docComment, "\n");
$this->startLine = $this->reflector->getStartLine() - $lineCount - 1;
$this->endLine = $this->reflector->getStartLine() - 1;
} elseif (is_string($commentOrReflector)) {
$this->docComment = $commentOrReflector;
} else {
throw new Exception\InvalidArgumentException(get_class($this) . ' must have a (string) DocComment or a Reflector in the constructor');
}
if ($this->docComment == '') {
throw new Exception\InvalidArgumentException('DocComment cannot be empty');
}
$this->annotationManager = $annotationManager;
}
示例4: format
/**
* Format the code represented by $reflector.
*
* @param \Reflector $reflector
*
* @return string formatted code
*/
public static function format(\Reflector $reflector)
{
if ($fileName = $reflector->getFileName()) {
if (!is_file($fileName)) {
throw new RuntimeException('Source code unavailable.');
}
$file = file_get_contents($fileName);
$lines = preg_split('/\\r?\\n/', $file);
$start = $reflector->getStartLine() - 1;
$end = $reflector->getEndLine() - $start;
$code = array_slice($lines, $start, $end);
// no need to escape this bad boy, since (for now) it's being output raw.
// return OutputFormatter::escape(implode(PHP_EOL, $code));
return implode(PHP_EOL, $code);
} else {
throw new RuntimeException('Source code unavailable.');
}
}
示例5: format
/**
* Format the code represented by $reflector.
*
* @param \Reflector $reflector
*
* @return string formatted code
*/
public static function format(\Reflector $reflector)
{
if ($fileName = $reflector->getFileName()) {
if (!is_file($fileName)) {
throw new RuntimeException('Source code unavailable.');
}
$file = file_get_contents($fileName);
$start = $reflector->getStartLine();
$end = $reflector->getEndLine() - $start;
$colors = new ConsoleColor();
$colors->addTheme('line_number', array('blue'));
$highlighter = new Highlighter($colors);
return $highlighter->getCodeSnippet($file, $start, 0, $end);
// no need to escape this bad boy, since (for now) it's being output raw.
// return OutputFormatter::escape(implode(PHP_EOL, $code));
return implode(PHP_EOL, $code);
} else {
throw new RuntimeException('Source code unavailable.');
}
}
示例6: format
/**
* Format the code represented by $reflector.
*
* @param \Reflector $reflector
* @param null|string $colorMode (default: null)
*
* @return string formatted code
*/
public static function format(\Reflector $reflector, $colorMode = null)
{
$colorMode = $colorMode ?: Configuration::COLOR_MODE_AUTO;
if ($fileName = $reflector->getFileName()) {
if (!is_file($fileName)) {
throw new RuntimeException('Source code unavailable.');
}
$file = file_get_contents($fileName);
$start = $reflector->getStartLine();
$end = $reflector->getEndLine() - $start;
$factory = new ConsoleColorFactory($colorMode);
$colors = $factory->getConsoleColor();
$highlighter = new Highlighter($colors);
return $highlighter->getCodeSnippet($file, $start, 0, $end);
// no need to escape this bad boy, since (for now) it's being output raw.
// return OutputFormatter::escape(implode(PHP_EOL, $code));
return implode(PHP_EOL, $code);
} else {
throw new RuntimeException('Source code unavailable.');
}
}
示例7: __construct
/**
* Constructor
*
* @param Reflector|string $commentOrReflector
* @return \Zend\Code\Reflection\DocBlockReflection
*/
public function __construct($commentOrReflector, DocBlock\TagManager $tagManager = null)
{
$this->tagManager = $tagManager ?: new DocBlock\TagManager(DocBlock\TagManager::USE_DEFAULT_PROTOTYPES);
if ($commentOrReflector instanceof \Reflector) {
$this->reflector = $commentOrReflector;
if (!method_exists($commentOrReflector, 'getDocComment')) {
throw new Exception\InvalidArgumentException('Reflector must contain method "getDocComment"');
}
/* @var MethodReflection $commentOrReflector */
$this->docComment = $commentOrReflector->getDocComment();
// determine line numbers
$lineCount = substr_count($this->docComment, "\n");
$this->startLine = $this->reflector->getStartLine() - $lineCount - 1;
$this->endLine = $this->reflector->getStartLine() - 1;
} elseif (is_string($commentOrReflector)) {
$this->docComment = $commentOrReflector;
} else {
throw new Exception\InvalidArgumentException(get_class($this) . ' must have a (string) DocComment or a Reflector in the constructor');
}
if ($this->docComment == '') {
throw new Exception\InvalidArgumentException('DocComment cannot be empty');
}
$this->reflect();
}
示例8: reflectFile
protected function reflectFile(Reflector $ref, SimpleXMLElement $element, $omitFileName = false)
{
$file = $element->addChild('file');
if (!$omitFileName) {
$file->fileName = substr($ref->getFileName(), strlen($this->docRoot));
}
$file->startLine = $ref->getStartLine();
$file->endLine = $ref->getEndLine();
}
示例9: calculateErrorLine
/**
* @param \Reflector|\Nette\Reflection\ClassType|\Nette\Reflection\Method $refl
* @param \Exception|\Throwable $e
* @param int $startLine
*
* @return int|string
*/
public static function calculateErrorLine(\Reflector $refl, $e, $startLine = NULL)
{
if ($startLine === NULL) {
$startLine = $refl->getStartLine();
}
if ($pos = Strings::match($e->getMessage(), '~position\\s*(\\d+)~')) {
$targetLine = self::calculateAffectedLine($refl, $pos[1]);
} elseif ($notImported = Strings::match($e->getMessage(), '~^\\[Semantical Error\\]\\s+The annotation "([^"]*?)"~i')) {
$parts = explode(self::findRenamed($refl, $notImported[1]), self::cleanedPhpDoc($refl), 2);
$targetLine = self::calculateAffectedLine($refl, strlen($parts[0]));
} elseif ($notFound = Strings::match($e->getMessage(), '~^\\[Semantical Error\\]\\s+Couldn\'t find\\s+(.*?)\\s+(.*?),\\s+~')) {
// this is just a guess
$parts = explode(self::findRenamed($refl, $notFound[2]), self::cleanedPhpDoc($refl), 2);
$targetLine = self::calculateAffectedLine($refl, strlen($parts[0]));
} else {
$targetLine = self::calculateAffectedLine($refl, 1);
}
$phpDocLines = count(Strings::split($refl->getDocComment(), '~[\\n\\r]+~'));
return $startLine - ($phpDocLines - ($targetLine - 1));
}
示例10: annotateLocation
function annotateLocation(\Reflector $refl)
{
return array('file' => $refl->getFileName(), 'line' => $refl->getStartLine());
}
示例11: locateEmptyTestFailureSource
public function locateEmptyTestFailureSource()
{
return FailureSourceLocator::formatFileAndLine($this->reflection->getFileName(), $this->reflection->getStartLine());
}