Вход Регистрация
Файл: vendor/league/flysystem/src/DirectoryListing.php
Строк: 75
<?php

declare(strict_types=1);

namespace 
LeagueFlysystem;

use 
ArrayIterator;
use 
Generator;
use 
IteratorAggregate;
use 
Traversable;

/**
 * @template T
 */
class DirectoryListing implements IteratorAggregate
{
    
/**
     * @param iterable<T> $listing
     */
    
public function __construct(private iterable $listing)
    {
    }

    
/**
     * @param callable(T): bool $filter
     *
     * @return DirectoryListing<T>
     */
    
public function filter(callable $filter): DirectoryListing
    
{
        
$generator = (static function (iterable $listing) use ($filter): Generator {
            foreach (
$listing as $item) {
                if (
$filter($item)) {
                    yield 
$item;
                }
            }
        })(
$this->listing);

        return new 
DirectoryListing($generator);
    }

    
/**
     * @template R
     *
     * @param callable(T): R $mapper
     *
     * @return DirectoryListing<R>
     */
    
public function map(callable $mapper): DirectoryListing
    
{
        
$generator = (static function (iterable $listing) use ($mapper): Generator {
            foreach (
$listing as $item) {
                yield 
$mapper($item);
            }
        })(
$this->listing);

        return new 
DirectoryListing($generator);
    }

    
/**
     * @return DirectoryListing<T>
     */
    
public function sortByPath(): DirectoryListing
    
{
        
$listing $this->toArray();

        
usort($listing, function (StorageAttributes $aStorageAttributes $b) {
            return 
$a->path() <=> $b->path();
        });

        return new 
DirectoryListing($listing);
    }

    
/**
     * @return Traversable<T>
     */
    
public function getIterator(): Traversable
    
{
        return 
$this->listing instanceof Traversable
            
$this->listing
            
: new ArrayIterator($this->listing);
    }

    
/**
     * @return T[]
     */
    
public function toArray(): array
    {
        return 
$this->listing instanceof Traversable
            
iterator_to_array($this->listingfalse)
            : (array) 
$this->listing;
    }
}
Онлайн: 1
Реклама