protected function getClassName($file, $withNamespace = true)
{
$tokens = token_get_all(file_get_contents($file));
$namespace = '';
$class = '';
$namespaceGuess = $withNamespace ? T_NAMESPACE : false;
$classGuess = T_CLASS;
foreach ($tokens as $token) {
if (!is_string($token)) {
list($id, $text) = $token;
if ($namespaceGuess) {
if ($namespaceGuess == T_NAMESPACE && $id == T_NAMESPACE) {
$namespaceGuess = T_STRING;
}
if ($namespaceGuess == T_STRING && $id == T_STRING) {
$namespace .= $text;
$namespaceGuess = T_NS_SEPARATOR;
}
if ($namespaceGuess == T_NS_SEPARATOR && $id == T_NS_SEPARATOR) {
$namespaceGuess = T_STRING;
$namespace .= $text;
}
// namespace ended
if ($namespaceGuess == T_NS_SEPARATOR && $id == T_WHITESPACE) {
$namespaceGuess = 0;
}
}
if ($classGuess) {
if ($classGuess == T_CLASS && $id == T_CLASS) {
$classGuess = T_STRING;
}
if ($classGuess == T_STRING && $id == T_STRING) {
$class .= $text;
break;
}
}
}
}
if ($class === '') {
throw new InvaildPluginFileFormatException(['path' => $file]);
}
return $namespace . '\\' . $class;
}