![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/friendsofphp/php-cs-fixer/src/ |
<?php declare(strict_types=1); /* * This file is part of PHP CS Fixer. * * (c) Fabien Potencier <[email protected]> * Dariusz Rumiński <[email protected]> * * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ namespace PhpCsFixer; /** * Handles files removal with possibility to remove them on shutdown. * * @author Adam Klvač <[email protected]> * @author Dariusz Rumiński <[email protected]> * * @internal */ final class FileRemoval { /** * List of observed files to be removed. * * @var array<string, true> */ private array $files = []; public function __construct() { register_shutdown_function([$this, 'clean']); } public function __destruct() { $this->clean(); } /** * This class is not intended to be serialized, * and cannot be deserialized (see __wakeup method). */ public function __sleep(): array { throw new \BadMethodCallException('Cannot serialize '.__CLASS__); } /** * Disable the deserialization of the class to prevent attacker executing * code by leveraging the __destruct method. * * @see https://owasp.org/www-community/vulnerabilities/PHP_Object_Injection */ public function __wakeup(): void { throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); } /** * Adds a file to be removed. */ public function observe(string $path): void { $this->files[$path] = true; } /** * Removes a file from shutdown removal. */ public function delete(string $path): void { if (isset($this->files[$path])) { unset($this->files[$path]); } $this->unlink($path); } /** * Removes attached files. */ public function clean(): void { foreach ($this->files as $file => $value) { $this->unlink($file); } $this->files = []; } private function unlink(string $path): void { @unlink($path); } }