DocumentationHelper::getClassNameFromFile()
\nn\t3::DocumentationHelper()->getClassNameFromFile($file);
Get class name as string incl. full namespace from a PHP file.
For example, returns Nng\Classes\MyClass.
\Nng\Nnhelpers\Helpers\DocumentationHelper::getClassNameFromFile( 'Classes/MyClass.php' );
Copied!
| @return string
Source Code
public static function getClassNameFromFile( $file )
{
$file = \nn\t3::File()->absPath( $file );
$fileStr = php_strip_whitespace($file);
$tokens = @token_get_all($fileStr);
$namespace = $class = '';
for ($i = 0; $i<count($tokens); $i++) {
if ($tokens[$i][0] === T_NAMESPACE) {
for ($j=$i+1;$j<count($tokens); $j++) {
if ($tokens[$j][0] === T_STRING || (PHP_VERSION_ID >= 80000 && ($tokens[$j][0] == T_NAME_QUALIFIED || $tokens[$j][0] == T_NAME_FULLY_QUALIFIED))) {
$namespace .= '\\'.$tokens[$j][1];
} else if ($tokens[$j] === '{' || $tokens[$j] === ';') {
break;
}
}
}
if ($tokens[$i][0] === T_CLASS) {
for ($j=$i+1;$j<count($tokens);$j++) {
if ($tokens[$j] === '{') {
$class = $tokens[$i+2][1] ?? null;
}
}
}
if ($class) break;
}
$className = ltrim( $namespace . '\\' . $class, '\\');
return $className;
}
Copied!