Вход Регистрация
Файл: vendor/rmccue/requests/src/Utility/FilteredIterator.php
Строк: 63
<?php
/**
 * Iterator for arrays requiring filtered values
 *
 * @package RequestsUtilities
 */

namespace WpOrgRequestsUtility;

use 
ArrayIterator;
use 
ReturnTypeWillChange;
use 
WpOrgRequestsExceptionInvalidArgument;
use 
WpOrgRequestsUtilityInputValidator;

/**
 * Iterator for arrays requiring filtered values
 *
 * @package RequestsUtilities
 */
final class FilteredIterator extends ArrayIterator {
    
/**
     * Callback to run as a filter
     *
     * @var callable
     */
    
private $callback;

    
/**
     * Create a new iterator
     *
     * @param array $data
     * @param callable $callback Callback to be called on each value
     *
     * @throws WpOrgRequestsExceptionInvalidArgument When the passed $data argument is not iterable.
     */
    
public function __construct($data$callback) {
        if (
InputValidator::is_iterable($data) === false) {
            throw 
InvalidArgument::create(1'$data''iterable'gettype($data));
        }

        
parent::__construct($data);

        if (
is_callable($callback)) {
            
$this->callback $callback;
        }
    }

    
/**
     * @inheritdoc
     *
     * @phpcs:disable PHPCompatibility.FunctionNameRestrictions.NewMagicMethods.__unserializeFound
     */
    #[ReturnTypeWillChange]
    
public function __unserialize($data) {}
    
// phpcs:enable

    
public function __wakeup() {
        unset(
$this->callback);
    }

    
/**
     * Get the current item's value after filtering
     *
     * @return string
     */
    #[ReturnTypeWillChange]
    
public function current() {
        
$value parent::current();

        if (
is_callable($this->callback)) {
            
$value call_user_func($this->callback$value);
        }

        return 
$value;
    }

    
/**
     * @inheritdoc
     */
    #[ReturnTypeWillChange]
    
public function unserialize($data) {}
}
Онлайн: 0
Реклама