| Server IP : 213.136.93.164 / Your IP : 216.73.216.104 Web Server : Apache System : Linux m14200.contabo.net 5.14.0-611.54.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Wed May 6 18:03:03 EDT 2026 x86_64 User : ki692510 ( 1047) 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]);
}
}