You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.8 KiB
PHP
67 lines
1.8 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @internal
|
|
*/
|
|
class SageParsersClassName implements SageParserInterface
|
|
{
|
|
public function replacesAllOtherParsers()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
public function parse(&$variable, $varData)
|
|
{
|
|
if (
|
|
Sage::enabled() === Sage::MODE_TEXT_ONLY
|
|
|| ! SageHelper::php53orLater()
|
|
|| empty($variable)
|
|
|| ! is_string($variable)
|
|
|| strlen($variable) < 3
|
|
) {
|
|
return false;
|
|
}
|
|
|
|
try {
|
|
if (! @class_exists($variable)) {
|
|
return false;
|
|
}
|
|
} catch (Throwable $t) {
|
|
return false;
|
|
} catch (Exception $e) {
|
|
return false;
|
|
}
|
|
|
|
$reflector = new ReflectionClass($variable);
|
|
if (! $reflector->isUserDefined()) {
|
|
return false;
|
|
}
|
|
|
|
if (SageHelper::isRichMode()) {
|
|
$varData->addTabToView(
|
|
$variable,
|
|
'Existing class',
|
|
SageHelper::ideLink(
|
|
$reflector->getFileName(),
|
|
$reflector->getStartLine(),
|
|
$reflector->getShortName()
|
|
)
|
|
);
|
|
} else {
|
|
if (SageHelper::isHtmlMode()) {
|
|
$varData->extendedValue =
|
|
array(
|
|
'Existing class' => SageHelper::ideLink(
|
|
$reflector->getFileName(),
|
|
$reflector->getStartLine(),
|
|
$reflector->getShortName()
|
|
)
|
|
);
|
|
} else {
|
|
$varData->extendedValue =
|
|
array('Existing class' => $reflector->getFileName() . ':' . $reflector->getStartLine());
|
|
}
|
|
}
|
|
}
|
|
}
|