public function extractNamespace()
{
$namespaceParts = [];
$tokens = token_get_all($this->phpCode);
$numberOfTokens = count($tokens);
for ($i = 0; $i < $numberOfTokens; $i++) {
$token = $tokens[$i];
if (is_string($token) || $token[0] !== T_NAMESPACE) {
continue;
}
for (++$i; $i < $numberOfTokens; $i++) {
$token = $tokens[$i];
if (is_string($token)) {
break;
}
list($type, $value) = $token;
if ($type === T_STRING) {
$namespaceParts[] = $value;
continue;
}
if ($type !== T_NS_SEPARATOR && $type !== T_WHITESPACE) {
break;
}
}
break;
}
if ($namespaceParts === []) {
return null;
}
return implode('\\', $namespaceParts);
}