| Server IP : 68.178.247.200 / Your IP : 216.73.217.172 Web Server : Apache System : Linux p3plzcpnl489463.prod.phx3.secureserver.net 4.18.0-553.126.2.lve.el8.x86_64 #1 SMP Thu May 28 14:12:30 UTC 2026 x86_64 User : x9dppmxs4rgd ( 8559391) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /opt/cpanel/ea-wappspector/vendor/rector/rector/src/PostRector/Guard/ |
Upload File : |
<?php
declare (strict_types=1);
namespace Rector\PostRector\Guard;
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\InlineHTML;
use PhpParser\Node\Stmt\Namespace_;
use Rector\PhpParser\Node\BetterNodeFinder;
final class AddUseStatementGuard
{
/**
* @readonly
* @var \Rector\PhpParser\Node\BetterNodeFinder
*/
private $betterNodeFinder;
/**
* @var array<string, bool>
*/
private $shouldTraverseOnFiles = [];
public function __construct(BetterNodeFinder $betterNodeFinder)
{
$this->betterNodeFinder = $betterNodeFinder;
}
/**
* @param Stmt[] $stmts
*/
public function shouldTraverse(array $stmts, string $filePath) : bool
{
if (isset($this->shouldTraverseOnFiles[$filePath])) {
return $this->shouldTraverseOnFiles[$filePath];
}
$totalNamespaces = 0;
// just loop the first level stmts to locate namespace to improve performance
// as namespace is always on first level
foreach ($stmts as $stmt) {
if ($stmt instanceof Namespace_) {
++$totalNamespaces;
}
// skip if 2 namespaces are present
if ($totalNamespaces === 2) {
return $this->shouldTraverseOnFiles[$filePath] = \false;
}
}
return $this->shouldTraverseOnFiles[$filePath] = !$this->betterNodeFinder->hasInstancesOf($stmts, [InlineHTML::class]);
}
}