code: public static function validateSymlink(string $target, string $link, string $rootDir): void
      {
          if ('' === $target) {
              throw new \InvalidArgumentException('The symlink target must not be empty.');
          }
  
          if ('' === $link) {
              throw new \InvalidArgumentException('The symlink path must not be empty.');
          }
  
          if (false !== strpos($link, '../')) {
              throw new \InvalidArgumentException('The symlink path must not be relative.');
          }
  
          $fs = new Filesystem();
  
          if ($fs->exists($rootDir.'/'.$link) && !is_link($rootDir.'/'.$link)) {
              throw new \LogicException(sprintf('The path "%s" exists and is not a symlink.', $link));
          }
      }
docs: Validates a symlink.
  
  @throws \InvalidArgumentException
  @throws \LogicException