mirror of
https://github.com/codeigniter4/CodeIgniter4.git
synced 2025-02-20 11:44:28 +08:00
Merge pull request #3280 from samsonasik/file-locator-optimize
optimize FileLocator autoloader : use foreach instead of for with count when possible
This commit is contained in:
commit
0e6eac7978
@ -171,34 +171,38 @@ class FileLocator
|
||||
{
|
||||
$php = file_get_contents($file);
|
||||
$tokens = token_get_all($php);
|
||||
$count = count($tokens);
|
||||
$dlm = false;
|
||||
$namespace = '';
|
||||
$class_name = '';
|
||||
|
||||
for ($i = 2; $i < $count; $i++)
|
||||
foreach ($tokens as $i => $token)
|
||||
{
|
||||
if ((isset($tokens[$i - 2][1]) && ($tokens[$i - 2][1] === 'phpnamespace' || $tokens[$i - 2][1] === 'namespace')) || ($dlm && $tokens[$i - 1][0] === T_NS_SEPARATOR && $tokens[$i][0] === T_STRING))
|
||||
if ($i < 2)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((isset($tokens[$i - 2][1]) && ($tokens[$i - 2][1] === 'phpnamespace' || $tokens[$i - 2][1] === 'namespace')) || ($dlm && $tokens[$i - 1][0] === T_NS_SEPARATOR && $token[0] === T_STRING))
|
||||
{
|
||||
if (! $dlm)
|
||||
{
|
||||
$namespace = 0;
|
||||
}
|
||||
if (isset($tokens[$i][1]))
|
||||
if (isset($token[1]))
|
||||
{
|
||||
$namespace = $namespace ? $namespace . '\\' . $tokens[$i][1] : $tokens[$i][1];
|
||||
$namespace = $namespace ? $namespace . '\\' . $token[1] : $token[1];
|
||||
$dlm = true;
|
||||
}
|
||||
}
|
||||
elseif ($dlm && ($tokens[$i][0] !== T_NS_SEPARATOR) && ($tokens[$i][0] !== T_STRING))
|
||||
elseif ($dlm && ($token[0] !== T_NS_SEPARATOR) && ($token[0] !== T_STRING))
|
||||
{
|
||||
$dlm = false;
|
||||
}
|
||||
if (($tokens[$i - 2][0] === T_CLASS || (isset($tokens[$i - 2][1]) && $tokens[$i - 2][1] === 'phpclass'))
|
||||
&& $tokens[$i - 1][0] === T_WHITESPACE
|
||||
&& $tokens[$i][0] === T_STRING)
|
||||
&& $token[0] === T_STRING)
|
||||
{
|
||||
$class_name = $tokens[$i][1];
|
||||
$class_name = $token[1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user