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

PharData::buildFromIterator

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

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

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

phardata.buildfromiterator.php

PharData::buildFromIterator

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::buildFromIterator(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

= NULL

public function PharData::buildFromIterator(Траверзабилно $iterator, ?string $baseDirectory = null): array

Конструирајте tar или zip архива од итератор

Параметри

iterator

Пополни tar или zip архива од итератор. Поддржани се два стила на итератори, итератори кои го мапираат името на датотеката во tar/zip до името на датотека на дискот, и итератори како DirectoryIterator кои враќаат објекти SplFileInfo. За итератори кои враќаат објекти SplFileInfo, вториот параметар е задолжителен.

baseDirectory

Било кој итератор што асоцијативно го мапира tar/zip името на датотеката до локација или враќа објекти SplFileInfo

Вратени вредности

Пополни tar/zip архива од содржината на директориумот. Опционалниот втор параметар е регуларен израз (pcre) што се користи за исклучување датотеки. Секое име на датотека што одговара на регуларниот израз ќе биде вклучено, сите други ќе бидат исклучени. За пофина контрола, користете враќа асоцијативен список што го мапира внатрешниот пат на датотеката до целокупниот пат на датотеката на файловиот систем.

Errors/Exceptions

Овој метод враќа UnexpectedValueException кога итераторот враќа погрешни вредности, како што е целоброен клуч наместо стринг, а BadMethodCallException кога се поминува итератор базиран на SplFileInfo без а baseDirectory параметар, или а PharException ако имало грешки при зачувувањето на phar архивата.

Дневник на промени

Верзија = NULL
8.1.0 Пополни tar/zip архива од содржината на директориумот. Опционалниот втор параметар е регуларен израз (pcre) што се користи за исклучување датотеки. Секое име на датотека што одговара на регуларниот израз ќе биде вклучено, сите други ќе бидат исклучени. За пофина контрола, користете веќе не враќа false.
8.0.0 baseDirectory сега е null.

Примери

ако е овозможен колекторот за отпадоци, Пополни tar/zip архива од содржината на директориумот. Опционалниот втор параметар е регуларен израз (pcre) што се користи за исклучување датотеки. Секое име на датотека што одговара на регуларниот израз ќе биде вклучено, сите други ќе бидат исклучени. За пофина контрола, користете со SplFileInfo

За итератори кои враќаат објекти SplFileInfo, делот од целокупната патека на секоја датотека што треба да се отстрани при додавање во tar/zip архивата

/path/to/project/
                 config/
                        dist.xml
                        debug.xml
                 lib/
                     file1.php
                     file2.php
                 src/
                     processthing.php
                 www/
                     index.php
                 cli/
                     index.php

За повеќето tar/zip архиви, архивата ќе ја одразува вистинската структура на директориумите, а вториот стил е најкорисен. На пример, за да се создаде tar/zip архива што ги содржи датотеките во овој распоред на директориуми од примерок:

<?php
$phar
= new PharData('project.tar');
$phar->buildFromIterator(
new
RecursiveIteratorIterator(
new
RecursiveDirectoryIterator('/path/to/project')),
'/path/to/project');
?>

За да го користите OpenSSL поддршката на PHP, исто така мора да го компајлирате PHP project.tar Овој код може да се користи за додавање на овие датотеки во tar архивата "project.tar": Пополни tar/zip архива од содржината на директориумот. Опционалниот втор параметар е регуларен израз (pcre) што се користи за исклучување датотеки. Секое име на датотека што одговара на регуларниот израз ќе биде вклучено, сите други ќе бидат исклучени. За пофина контрола, користете може веднаш да се користи.

Како интересен податок, Пополни tar/zip архива од содржината на директориумот. Опционалниот втор параметар е регуларен израз (pcre) што се користи за исклучување датотеки. Секое име на датотека што одговара на регуларниот израз ќе биде вклучено, сите други ќе бидат исклучени. За пофина контрола, користете не поставува вредности како компресија, метаподатоци, и ова може да се направи по креирањето на tar/zip архивата. DirectoryIterator:

<?php
$phar
= new PharData('project.tar');
$phar->buildFromIterator(
new
RecursiveIteratorIterator(
new
Phar('/path/to/anotherphar.phar')),
'phar:///path/to/anotherphar.phar/path/to/project');
$phar->setStub($phar->createDefaultStub('cli/index.php', 'www/index.php'));
?>

пример кој покажува употреба на некои знаменца Пополни tar/zip архива од содржината на директориумот. Опционалниот втор параметар е регуларен израз (pcre) што се користи за исклучување датотеки. Секое име на датотека што одговара на регуларниот израз ќе биде вклучено, сите други ќе бидат исклучени. За пофина контрола, користете со други итератори

Вториот облик на итераторот може да се користи со било кој итератор што враќа мапирање клуч => вредност, како што е а ArrayIterator:

<?php
$phar
= new PharData('project.tar');
$phar->buildFromIterator(
new
ArrayIterator(
array(
'internal/file.php' => dirname(__FILE__) . '/somefile.php',
'another/file.jpg' => fopen('/path/to/bigfile.jpg', 'rb'),
)));
?>

Види Исто така

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

cbonnissent
пред 11 години
The code in the first exemple doesn't work properly without the flag  FilesystemIterator::SKIP_DOTS in the RecursiveDirectoryIterator (on a linux filesystem).

So, to build a tar with a phar, I do (with two level of iteration here) :

            $pharTar = new \PharData($contentTar.".tar");
            $firstLevelIterator = new \DirectoryIterator($this->inputPath);
            foreach ($firstLevelIterator as $fileInfo) {
                /* @var \SplFileInfo $fileInfo */
                if (in_array($fileInfo->getFilename(), $allowedDirectory)) {
                    $recursiveDirectoryIterator = new \RecursiveDirectoryIterator(
                        $this->inputPath . DIRECTORY_SEPARATOR . $fileInfo->getFilename(), \FilesystemIterator::SKIP_DOTS);
                    $pharTar->buildFromIterator(new \RecursiveIteratorIterator($recursiveDirectoryIterator), $this->inputPath);
                }
            }
На оваа страница

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

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

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

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

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