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

RecursiveCallbackFilterIterator

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

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

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

class.recursivecallbackfilteriterator.php

Класата RecursiveCallbackFilterIterator

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

Вовед

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

Примери

Повикот треба да прифаќа до три аргументи: тековната ставка, тековниот клуч и итераторот, соодветно.

Пример #1 Достапни аргументи за повикот

<?php

/**
* Callback for RecursiveCallbackFilterIterator
*
* @param $current Current item's value
* @param $key Current item's key
* @param $iterator Iterator being filtered
* @return boolean TRUE to accept the current item, FALSE otherwise
*/
function my_callback($current, $key, $iterator) {
// Your filtering code here
}

?>

Филтрирањето на рекурзивен итератор генерално вклучува два услови. Првиот е, за да се овозможи рекурзија, функцијата за повикување треба да врати true дали тековната ставка на итераторот има деца. Вториот е нормалниот услов за филтрирање, како што е проверка на големината на датотеката или наставката како во примерот подолу.

Пример #2 Основен пример за рекурзивен повикател

<?php

$dir
= new RecursiveDirectoryIterator(__DIR__);

// Filter large files ( > 100MB)
$files = new RecursiveCallbackFilterIterator($dir, function ($current, $key, $iterator) {
// Allow recursion
if ($iterator->hasChildren()) {
return
TRUE;
}
// Check for large file
if ($current->isFile() && $current->getSize() > 104857600) {
return
TRUE;
}
return
FALSE;
});

foreach (new
RecursiveIteratorIterator($files) as $file) {
echo
$file->getPathname() . PHP_EOL;
}

?>

Содржина

Белешки од корисници 2 забелешки

a dot belloundja at gmail dot com
пред 13 години
Here is a code that may implement similar functionality in PHP 5.2 or 5.3 :

<?php

class RecursiveCallbackFilterIterator extends RecursiveFilterIterator {
    
    public function __construct ( RecursiveIterator $iterator, $callback ) {
        
        $this->callback = $callback;
        
        parent::__construct($iterator);
        
    }
    
    public function accept () {
        
        $callback = $this->callback;
        
        return $callback(parent::current(), parent::key(), parent::getInnerIterator());
        
    }
    
    public function getChildren () {
        
        return new self($this->getInnerIterator()->getChildren(), $this->callback);
        
    }
    
}

?>
Анонимен
пред 14 години
Note that the following filters out both files and directories whos names start with the letter "T". The important thing here is that since the function returns false for a directory entry whos name starts with T, the directory is also not traversed recursively.

<?php
$doesntStartWithLetterT = function ($current) {
    return $current->getFileName()[0] !== 'T';
};

$rdi = new RecursiveDirectoryIterator(__DIR__);
$files = new RecursiveCallbackFilterIterator($rdi, $doesntStartWithLetterT);
foreach (new RecursiveIteratorIterator($files) as $file) {
    echo $file->getPathname() . PHP_EOL;
}
?>
На оваа страница

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

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

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

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

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