PHP.mk документација

FilesystemIterator

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

class.filesystemiterator.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека class.filesystemiterator.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
FilesystemIterator

Референца за `class.filesystemiterator.php` со подобрена типографија и навигација.

class.filesystemiterator.php

Класата FilesystemIterator

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

Вовед

Filesystem итератор

Синопсис на класата

class FilesystemIterator extends DirectoryIterator {
/* Константи */
public const int CURRENT_MODE_MASK;
public const int CURRENT_AS_PATHNAME;
public const int CURRENT_AS_FILEINFO;
public const int CURRENT_AS_SELF;
public const int KEY_MODE_MASK;
public const int KEY_AS_PATHNAME;
public const int FOLLOW_SYMLINKS;
public const int KEY_AS_FILENAME;
public const int NEW_CURRENT_AND_KEY;
public const int OTHER_MODE_MASK;
public const int SKIP_DOTS;
public const int UNIX_PATHS;
/* Методи */
public __construct(string $directory, int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::SKIP_DOTS)
public getFlags(): int
public key(): string
public next(): void
public rewind(): void
public setFlags(int $flags): void
/* Наследени методи */
public SplFileInfo::getBasename(string $suffix = ""): string
public SplFileInfo::openFile(string $mode = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO, bool $useIncludePath = false, ?resource $context = null): SplFileObject
public SplFileInfo::setFileClass(string $class = SplFileObject::class): void
public SplFileInfo::setInfoClass(string $class = SplFileInfo::class): void
}

Претходно дефинирани константи

FilesystemIterator::CURRENT_AS_PATHNAME

Прави FilesystemIterator::current() ја враќа патеката.

FilesystemIterator::CURRENT_AS_FILEINFO

Прави FilesystemIterator::current() враќа еден SplFileInfo instance.

FilesystemIterator::CURRENT_AS_SELF

Прави FilesystemIterator::current() return $this (the FilesystemIterator).

FilesystemIterator::CURRENT_MODE_MASK

Маски FilesystemIterator::current()

FilesystemIterator::KEY_AS_PATHNAME

Прави FilesystemIterator::key() ја враќа патеката.

FilesystemIterator::KEY_AS_FILENAME

Прави FilesystemIterator::key() го враќа името на датотеката.

Прави RecursiveDirectoryIterator::hasChildren() следи симболични врски.

FilesystemIterator::KEY_MODE_MASK

Маски FilesystemIterator::key()

FilesystemIterator::NEW_CURRENT_AND_KEY

Исто како FilesystemIterator::KEY_AS_FILENAME | FilesystemIterator::CURRENT_AS_FILEINFO.

FilesystemIterator::OTHER_MODE_MASK

Маска што се користи за FilesystemIterator::getFlags() and Ги добива знаменцата за ракување, како што е поставено во.

FilesystemIterator::SKIP_DOTS

Прескокнува точки датотеки (. and ..).

FilesystemIterator::UNIX_PATHS

Прави патеките да користат Unix-стил напред коса црта без оглед на системската стандардна. Забележете дека path што е предадена на конструкторот не се менува.

Содржина

Белешки од корисници 4 белешки

paul на paulgarvin точка net
пред 11 години
You may be wondering, like I did, what is the difference between this class and DirectoryIterator?

When you iteterate using DirectoryIterator each "value" returned is the same DirectoryIterator object. The internal state is changed so when you call isDir(), getPathname(), etc the correct information is returned. If you were to ask for a key when iterating you will get an integer index value.

FilesystemIterator (and RecursiveDirectoryIterator) on the other hand returns a new, different SplFileInfo object for each iteration step. The key is the full pathname of the file. This is by default. You can change what is returned for the key or value using the "flags" arguement to the constructor.
spamblocker1@yahoo
пред 1 година
Here's the difference between DirectoryIterator and FileSystemIterator.

FileSystemIterator extends DirectoryIterator, inheriting all of it's functionalities, but extending it with additional options and features:

- Additional flags and options (e.g., FileSystemIterator::SKIP_DOTS to skip . and .. entries).
- Offers more control and flexibility over the iteration process.
- Suitable for more complex directory traversal requirements where additional control is needed.

So if you just need the contents of a directory, use DirectoryIterator.

If you need to do directory traversal, use FileSystemIterator.
blackout на drunkenlords точка com
пред 4 години
Here's a great little drop in replacement for FilesystemIterator I wrote to easily Iterate your filesystem, including:

* Sorting - using ArrayIterator
* Regex Matching - using RegexIterator
* Limiting - using LimitIterator

It's fully chainable

<?php

// Sort by filemtime
$files = (new AdvancedFilesystemIterator('/path/to/files'))->sortByMTime();

// Sort by filemtime -> Limit output to 10
$files = (new AdvancedFilesystemIterator('/path/to/files'))->sortByMTime()->limit(0, 10);

// Sort by filemtime -> Only get CSV files -> Limit to 10
$files = (new AdvancedFilesystemIterator('/path/to/files'))->sortByMTime()->match('/csv$/')->limit(0, 10);

// Sort by filemtime -> Only get CSV files -> Limit to 10 -> and back to sorting by Filename
$files = (new AdvancedFilesystemIterator('/path/to/files'))->sortByMTime()->match('/csv$/')->limit(0, 10)->sortByFilename();

// Sort by any of SplFileInfo's get*() methods i.e. Owner, CTime, Basename, ATime, Perms, Type, isFile, anything
$files = (new AdvancedFilesystemIterator('/path/to/files'))->sortByOwner();

// Foreach
foreach ((new AdvancedFilesystemIterator('/path/to/files'))->sortByMTime()->match('/csv$/')->limit(0, 10) AS $file)
{
    print $file->getFilename() . "<br>\n";
}

// The Class
class AdvancedFilesystemIterator extends ArrayIterator
{
    public function __construct(string $path, int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::SKIP_DOTS)
    {
        parent::__construct(iterator_to_array(new FilesystemIterator($path, $flags)));
    }

    public function __call(string $name, array $arguments)
    {
        if (preg_match('/^sortBy(.*)/', $name, $m)) return $this->sort('get' . $m[1]);
        throw new MemberAccessException('Method ' . $methodName . ' not exists');
    }

    public function sort($method)
    {
        if (!method_exists('SplFileInfo', $method)) throw new InvalidArgumentException(sprintf('Method "%s" does not exist in SplFileInfo', $method));

        $this->uasort(function(SplFileInfo $a, SplFileInfo $b) use ($method) { return (is_string($a->$method()) ? strnatcmp($a->$method(), $b->$method()) : $b->$method() - $a->$method()); });

        return $this;
    }

    public function limit(int $offset = 0, int $limit = -1)
    {
        return parent::__construct(iterator_to_array(new LimitIterator($this, $offset, $limit))) ?? $this;
    }

    public function match(string $regex, int $mode = RegexIterator::MATCH, int $flags = 0, int $preg_flags = 0)
    {
        return parent::__construct(iterator_to_array(new RegexIterator($this, $regex, $mode, $flags, $preg_flags))) ?? $this;
    }
}
thedilab на gmail точка com
пред 10 години
DirectoryIterator returns virtual directories "." and ".." in a loop.
But FilesystemIterator ignores them.
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.