104fd306cSNickeau<?php 204fd306cSNickeau 304fd306cSNickeau/* 404fd306cSNickeau * This file is part of the Symfony package. 504fd306cSNickeau * 604fd306cSNickeau * (c) Fabien Potencier <fabien@symfony.com> 704fd306cSNickeau * 804fd306cSNickeau * For the full copyright and license information, please view the LICENSE 904fd306cSNickeau * file that was distributed with this source code. 1004fd306cSNickeau */ 1104fd306cSNickeau 1204fd306cSNickeaunamespace Symfony\Component\Process; 1304fd306cSNickeau 1404fd306cSNickeauuse Symfony\Component\Process\Exception\InvalidArgumentException; 1504fd306cSNickeau 1604fd306cSNickeau/** 1704fd306cSNickeau * ProcessUtils is a bunch of utility methods. 1804fd306cSNickeau * 1904fd306cSNickeau * This class contains static methods only and is not meant to be instantiated. 2004fd306cSNickeau * 2104fd306cSNickeau * @author Martin Hasoň <martin.hason@gmail.com> 2204fd306cSNickeau */ 2304fd306cSNickeauclass ProcessUtils 2404fd306cSNickeau{ 2504fd306cSNickeau /** 2604fd306cSNickeau * This class should not be instantiated. 2704fd306cSNickeau */ 2804fd306cSNickeau private function __construct() 2904fd306cSNickeau { 3004fd306cSNickeau } 3104fd306cSNickeau 3204fd306cSNickeau /** 3304fd306cSNickeau * Validates and normalizes a Process input. 3404fd306cSNickeau * 3504fd306cSNickeau * @param string $caller The name of method call that validates the input 3604fd306cSNickeau * @param mixed $input The input to validate 3704fd306cSNickeau * 3804fd306cSNickeau * @return mixed 3904fd306cSNickeau * 4004fd306cSNickeau * @throws InvalidArgumentException In case the input is not valid 4104fd306cSNickeau */ 4204fd306cSNickeau public static function validateInput(string $caller, $input) 4304fd306cSNickeau { 4404fd306cSNickeau if (null !== $input) { 4504fd306cSNickeau if (\is_resource($input)) { 4604fd306cSNickeau return $input; 4704fd306cSNickeau } 4804fd306cSNickeau if (\is_string($input)) { 4904fd306cSNickeau return $input; 5004fd306cSNickeau } 51*83c68632SNico if (\is_scalar($input)) { 5204fd306cSNickeau return (string) $input; 5304fd306cSNickeau } 5404fd306cSNickeau if ($input instanceof Process) { 5504fd306cSNickeau return $input->getIterator($input::ITER_SKIP_ERR); 5604fd306cSNickeau } 5704fd306cSNickeau if ($input instanceof \Iterator) { 5804fd306cSNickeau return $input; 5904fd306cSNickeau } 6004fd306cSNickeau if ($input instanceof \Traversable) { 6104fd306cSNickeau return new \IteratorIterator($input); 6204fd306cSNickeau } 6304fd306cSNickeau 6404fd306cSNickeau throw new InvalidArgumentException(sprintf('"%s" only accepts strings, Traversable objects or stream resources.', $caller)); 6504fd306cSNickeau } 6604fd306cSNickeau 6704fd306cSNickeau return $input; 6804fd306cSNickeau } 6904fd306cSNickeau} 70